{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "21f844f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>诊断结果</th>\n",
       "      <th>平均半径</th>\n",
       "      <th>平均纹理</th>\n",
       "      <th>平均周长</th>\n",
       "      <th>平均面积</th>\n",
       "      <th>平均光滑度</th>\n",
       "      <th>平均致密度</th>\n",
       "      <th>平均凹度</th>\n",
       "      <th>平均凹点数</th>\n",
       "      <th>...</th>\n",
       "      <th>最差半径</th>\n",
       "      <th>最差纹理</th>\n",
       "      <th>最差周长</th>\n",
       "      <th>最差面积</th>\n",
       "      <th>最差光滑度</th>\n",
       "      <th>最差致密度</th>\n",
       "      <th>最差凹度</th>\n",
       "      <th>最差凹点数</th>\n",
       "      <th>最差对称性</th>\n",
       "      <th>最差分形维度</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>842302</td>\n",
       "      <td>确诊</td>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.30010</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>...</td>\n",
       "      <td>25.38</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.1622</td>\n",
       "      <td>0.6656</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.26540</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>842517</td>\n",
       "      <td>确诊</td>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.08690</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>...</td>\n",
       "      <td>24.99</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.1238</td>\n",
       "      <td>0.1866</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.18600</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8510426</td>\n",
       "      <td>健康</td>\n",
       "      <td>13.54</td>\n",
       "      <td>14.36</td>\n",
       "      <td>87.46</td>\n",
       "      <td>566.3</td>\n",
       "      <td>0.09779</td>\n",
       "      <td>0.08129</td>\n",
       "      <td>0.06664</td>\n",
       "      <td>0.04781</td>\n",
       "      <td>...</td>\n",
       "      <td>15.11</td>\n",
       "      <td>19.26</td>\n",
       "      <td>99.70</td>\n",
       "      <td>711.2</td>\n",
       "      <td>0.1440</td>\n",
       "      <td>0.1773</td>\n",
       "      <td>0.2390</td>\n",
       "      <td>0.12880</td>\n",
       "      <td>0.2977</td>\n",
       "      <td>0.07259</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>8510653</td>\n",
       "      <td>健康</td>\n",
       "      <td>13.08</td>\n",
       "      <td>15.71</td>\n",
       "      <td>85.63</td>\n",
       "      <td>520.0</td>\n",
       "      <td>0.10750</td>\n",
       "      <td>0.12700</td>\n",
       "      <td>0.04568</td>\n",
       "      <td>0.03110</td>\n",
       "      <td>...</td>\n",
       "      <td>14.50</td>\n",
       "      <td>20.49</td>\n",
       "      <td>96.09</td>\n",
       "      <td>630.5</td>\n",
       "      <td>0.1312</td>\n",
       "      <td>0.2776</td>\n",
       "      <td>0.1890</td>\n",
       "      <td>0.07283</td>\n",
       "      <td>0.3184</td>\n",
       "      <td>0.08183</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>84300903</td>\n",
       "      <td>确诊</td>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.19740</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>...</td>\n",
       "      <td>23.57</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.1444</td>\n",
       "      <td>0.4245</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.24300</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 32 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         ID 诊断结果   平均半径   平均纹理    平均周长    平均面积    平均光滑度    平均致密度     平均凹度  \\\n",
       "0    842302   确诊  17.99  10.38  122.80  1001.0  0.11840  0.27760  0.30010   \n",
       "1    842517   确诊  20.57  17.77  132.90  1326.0  0.08474  0.07864  0.08690   \n",
       "2   8510426   健康  13.54  14.36   87.46   566.3  0.09779  0.08129  0.06664   \n",
       "3   8510653   健康  13.08  15.71   85.63   520.0  0.10750  0.12700  0.04568   \n",
       "4  84300903   确诊  19.69  21.25  130.00  1203.0  0.10960  0.15990  0.19740   \n",
       "\n",
       "     平均凹点数  ...   最差半径   最差纹理    最差周长    最差面积   最差光滑度   最差致密度    最差凹度  \\\n",
       "0  0.14710  ...  25.38  17.33  184.60  2019.0  0.1622  0.6656  0.7119   \n",
       "1  0.07017  ...  24.99  23.41  158.80  1956.0  0.1238  0.1866  0.2416   \n",
       "2  0.04781  ...  15.11  19.26   99.70   711.2  0.1440  0.1773  0.2390   \n",
       "3  0.03110  ...  14.50  20.49   96.09   630.5  0.1312  0.2776  0.1890   \n",
       "4  0.12790  ...  23.57  25.53  152.50  1709.0  0.1444  0.4245  0.4504   \n",
       "\n",
       "     最差凹点数   最差对称性   最差分形维度  \n",
       "0  0.26540  0.4601  0.11890  \n",
       "1  0.18600  0.2750  0.08902  \n",
       "2  0.12880  0.2977  0.07259  \n",
       "3  0.07283  0.3184  0.08183  \n",
       "4  0.24300  0.3613  0.08758  \n",
       "\n",
       "[5 rows x 32 columns]"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd # 导入Pandas数据处理工具\n",
    "# 读取数据\n",
    "data = pd.read_csv('某地乳腺检查数据.csv')\n",
    "data.head()  # head method show only first 5 rows"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "70790f6e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>平均半径</th>\n",
       "      <th>平均纹理</th>\n",
       "      <th>平均周长</th>\n",
       "      <th>平均面积</th>\n",
       "      <th>平均光滑度</th>\n",
       "      <th>平均致密度</th>\n",
       "      <th>平均凹度</th>\n",
       "      <th>平均凹点数</th>\n",
       "      <th>平均对称性</th>\n",
       "      <th>平均分形维度</th>\n",
       "      <th>...</th>\n",
       "      <th>最差半径</th>\n",
       "      <th>最差纹理</th>\n",
       "      <th>最差周长</th>\n",
       "      <th>最差面积</th>\n",
       "      <th>最差光滑度</th>\n",
       "      <th>最差致密度</th>\n",
       "      <th>最差凹度</th>\n",
       "      <th>最差凹点数</th>\n",
       "      <th>最差对称性</th>\n",
       "      <th>最差分形维度</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.30010</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>0.2419</td>\n",
       "      <td>0.07871</td>\n",
       "      <td>...</td>\n",
       "      <td>25.380</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.16220</td>\n",
       "      <td>0.66560</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.26540</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.08690</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>0.1812</td>\n",
       "      <td>0.05667</td>\n",
       "      <td>...</td>\n",
       "      <td>24.990</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.12380</td>\n",
       "      <td>0.18660</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.18600</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>13.54</td>\n",
       "      <td>14.36</td>\n",
       "      <td>87.46</td>\n",
       "      <td>566.3</td>\n",
       "      <td>0.09779</td>\n",
       "      <td>0.08129</td>\n",
       "      <td>0.06664</td>\n",
       "      <td>0.04781</td>\n",
       "      <td>0.1885</td>\n",
       "      <td>0.05766</td>\n",
       "      <td>...</td>\n",
       "      <td>15.110</td>\n",
       "      <td>19.26</td>\n",
       "      <td>99.70</td>\n",
       "      <td>711.2</td>\n",
       "      <td>0.14400</td>\n",
       "      <td>0.17730</td>\n",
       "      <td>0.2390</td>\n",
       "      <td>0.12880</td>\n",
       "      <td>0.2977</td>\n",
       "      <td>0.07259</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>13.08</td>\n",
       "      <td>15.71</td>\n",
       "      <td>85.63</td>\n",
       "      <td>520.0</td>\n",
       "      <td>0.10750</td>\n",
       "      <td>0.12700</td>\n",
       "      <td>0.04568</td>\n",
       "      <td>0.03110</td>\n",
       "      <td>0.1967</td>\n",
       "      <td>0.06811</td>\n",
       "      <td>...</td>\n",
       "      <td>14.500</td>\n",
       "      <td>20.49</td>\n",
       "      <td>96.09</td>\n",
       "      <td>630.5</td>\n",
       "      <td>0.13120</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.1890</td>\n",
       "      <td>0.07283</td>\n",
       "      <td>0.3184</td>\n",
       "      <td>0.08183</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.19740</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>0.2069</td>\n",
       "      <td>0.05999</td>\n",
       "      <td>...</td>\n",
       "      <td>23.570</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.14440</td>\n",
       "      <td>0.42450</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.24300</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>564</th>\n",
       "      <td>21.56</td>\n",
       "      <td>22.39</td>\n",
       "      <td>142.00</td>\n",
       "      <td>1479.0</td>\n",
       "      <td>0.11100</td>\n",
       "      <td>0.11590</td>\n",
       "      <td>0.24390</td>\n",
       "      <td>0.13890</td>\n",
       "      <td>0.1726</td>\n",
       "      <td>0.05623</td>\n",
       "      <td>...</td>\n",
       "      <td>25.450</td>\n",
       "      <td>26.40</td>\n",
       "      <td>166.10</td>\n",
       "      <td>2027.0</td>\n",
       "      <td>0.14100</td>\n",
       "      <td>0.21130</td>\n",
       "      <td>0.4107</td>\n",
       "      <td>0.22160</td>\n",
       "      <td>0.2060</td>\n",
       "      <td>0.07115</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>565</th>\n",
       "      <td>20.13</td>\n",
       "      <td>28.25</td>\n",
       "      <td>131.20</td>\n",
       "      <td>1261.0</td>\n",
       "      <td>0.09780</td>\n",
       "      <td>0.10340</td>\n",
       "      <td>0.14400</td>\n",
       "      <td>0.09791</td>\n",
       "      <td>0.1752</td>\n",
       "      <td>0.05533</td>\n",
       "      <td>...</td>\n",
       "      <td>23.690</td>\n",
       "      <td>38.25</td>\n",
       "      <td>155.00</td>\n",
       "      <td>1731.0</td>\n",
       "      <td>0.11660</td>\n",
       "      <td>0.19220</td>\n",
       "      <td>0.3215</td>\n",
       "      <td>0.16280</td>\n",
       "      <td>0.2572</td>\n",
       "      <td>0.06637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>566</th>\n",
       "      <td>16.60</td>\n",
       "      <td>28.08</td>\n",
       "      <td>108.30</td>\n",
       "      <td>858.1</td>\n",
       "      <td>0.08455</td>\n",
       "      <td>0.10230</td>\n",
       "      <td>0.09251</td>\n",
       "      <td>0.05302</td>\n",
       "      <td>0.1590</td>\n",
       "      <td>0.05648</td>\n",
       "      <td>...</td>\n",
       "      <td>18.980</td>\n",
       "      <td>34.12</td>\n",
       "      <td>126.70</td>\n",
       "      <td>1124.0</td>\n",
       "      <td>0.11390</td>\n",
       "      <td>0.30940</td>\n",
       "      <td>0.3403</td>\n",
       "      <td>0.14180</td>\n",
       "      <td>0.2218</td>\n",
       "      <td>0.07820</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>567</th>\n",
       "      <td>20.60</td>\n",
       "      <td>29.33</td>\n",
       "      <td>140.10</td>\n",
       "      <td>1265.0</td>\n",
       "      <td>0.11780</td>\n",
       "      <td>0.27700</td>\n",
       "      <td>0.35140</td>\n",
       "      <td>0.15200</td>\n",
       "      <td>0.2397</td>\n",
       "      <td>0.07016</td>\n",
       "      <td>...</td>\n",
       "      <td>25.740</td>\n",
       "      <td>39.42</td>\n",
       "      <td>184.60</td>\n",
       "      <td>1821.0</td>\n",
       "      <td>0.16500</td>\n",
       "      <td>0.86810</td>\n",
       "      <td>0.9387</td>\n",
       "      <td>0.26500</td>\n",
       "      <td>0.4087</td>\n",
       "      <td>0.12400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>568</th>\n",
       "      <td>7.76</td>\n",
       "      <td>24.54</td>\n",
       "      <td>47.92</td>\n",
       "      <td>181.0</td>\n",
       "      <td>0.05263</td>\n",
       "      <td>0.04362</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.1587</td>\n",
       "      <td>0.05884</td>\n",
       "      <td>...</td>\n",
       "      <td>9.456</td>\n",
       "      <td>30.37</td>\n",
       "      <td>59.16</td>\n",
       "      <td>268.6</td>\n",
       "      <td>0.08996</td>\n",
       "      <td>0.06444</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.2871</td>\n",
       "      <td>0.07039</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>569 rows × 30 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      平均半径   平均纹理    平均周长    平均面积    平均光滑度    平均致密度     平均凹度    平均凹点数   平均对称性  \\\n",
       "0    17.99  10.38  122.80  1001.0  0.11840  0.27760  0.30010  0.14710  0.2419   \n",
       "1    20.57  17.77  132.90  1326.0  0.08474  0.07864  0.08690  0.07017  0.1812   \n",
       "2    13.54  14.36   87.46   566.3  0.09779  0.08129  0.06664  0.04781  0.1885   \n",
       "3    13.08  15.71   85.63   520.0  0.10750  0.12700  0.04568  0.03110  0.1967   \n",
       "4    19.69  21.25  130.00  1203.0  0.10960  0.15990  0.19740  0.12790  0.2069   \n",
       "..     ...    ...     ...     ...      ...      ...      ...      ...     ...   \n",
       "564  21.56  22.39  142.00  1479.0  0.11100  0.11590  0.24390  0.13890  0.1726   \n",
       "565  20.13  28.25  131.20  1261.0  0.09780  0.10340  0.14400  0.09791  0.1752   \n",
       "566  16.60  28.08  108.30   858.1  0.08455  0.10230  0.09251  0.05302  0.1590   \n",
       "567  20.60  29.33  140.10  1265.0  0.11780  0.27700  0.35140  0.15200  0.2397   \n",
       "568   7.76  24.54   47.92   181.0  0.05263  0.04362  0.00000  0.00000  0.1587   \n",
       "\n",
       "      平均分形维度  ...    最差半径   最差纹理    最差周长    最差面积    最差光滑度    最差致密度    最差凹度  \\\n",
       "0    0.07871  ...  25.380  17.33  184.60  2019.0  0.16220  0.66560  0.7119   \n",
       "1    0.05667  ...  24.990  23.41  158.80  1956.0  0.12380  0.18660  0.2416   \n",
       "2    0.05766  ...  15.110  19.26   99.70   711.2  0.14400  0.17730  0.2390   \n",
       "3    0.06811  ...  14.500  20.49   96.09   630.5  0.13120  0.27760  0.1890   \n",
       "4    0.05999  ...  23.570  25.53  152.50  1709.0  0.14440  0.42450  0.4504   \n",
       "..       ...  ...     ...    ...     ...     ...      ...      ...     ...   \n",
       "564  0.05623  ...  25.450  26.40  166.10  2027.0  0.14100  0.21130  0.4107   \n",
       "565  0.05533  ...  23.690  38.25  155.00  1731.0  0.11660  0.19220  0.3215   \n",
       "566  0.05648  ...  18.980  34.12  126.70  1124.0  0.11390  0.30940  0.3403   \n",
       "567  0.07016  ...  25.740  39.42  184.60  1821.0  0.16500  0.86810  0.9387   \n",
       "568  0.05884  ...   9.456  30.37   59.16   268.6  0.08996  0.06444  0.0000   \n",
       "\n",
       "       最差凹点数   最差对称性   最差分形维度  \n",
       "0    0.26540  0.4601  0.11890  \n",
       "1    0.18600  0.2750  0.08902  \n",
       "2    0.12880  0.2977  0.07259  \n",
       "3    0.07283  0.3184  0.08183  \n",
       "4    0.24300  0.3613  0.08758  \n",
       "..       ...     ...      ...  \n",
       "564  0.22160  0.2060  0.07115  \n",
       "565  0.16280  0.2572  0.06637  \n",
       "566  0.14180  0.2218  0.07820  \n",
       "567  0.26500  0.4087  0.12400  \n",
       "568  0.00000  0.2871  0.07039  \n",
       "\n",
       "[569 rows x 30 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 设置X和y\n",
    "y = data[\"诊断结果\"]\n",
    "X = data.drop([\"诊断结果\", \"ID\"], axis=1)\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4e8c8ba0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/zElEQVR4nO3deVxVdR7/8feFKxdRZFHURFIEc18KSaKJydK00qTFxmQynbGUSi2Vyp/m0gKYZlY0FmaDjrlnw5RDLlm2KCZGGoFbbriL4gUFLtv5/eHP+4tUsia7cHw9H4/zyHO+53zv59zq9u57zvcci2EYhgAAAFDrubm6AAAAAPw+CHYAAAAmQbADAAAwCYIdAACASRDsAAAATIJgBwAAYBIEOwAAAJMg2AEAAJgEwQ4AAMAkCHYAaoyioqJLtn3++edasWKFzp49e1l9vfXWW/r2229/dQ3ff/+9cnNzL9p25MgRDRs2TIcOHfrV/f5WDoejyp9Xr179m/oZNWqUFi9e/HuVBaCGItgBqBEKCwvVvn17TZs27aLt48eP1/33369169Zd0GYYhrKysnTw4EGtWLFClZWVmj17tr7//nv9+OOP2rZtmxwOh3Jzc5WZmam0tDS98MILeuaZZy7oa9KkSerevftFA2RxcbHmzp1bbQDNzc2VxWKRu7u7rFarrFar3N3dZbFYnOtWq1Vubm666aabqv1OcnNz1aJFC+c5Z2Zmqnfv3tq4cWO1x/3coUOHlJSUpL179/6q4wDUPgQ7ADWCt7e3xo0bp+eee04LFy6s0vbNN98oPT1dt956q+bMmXPBsRUVFerUqZPWrl2r+++/X3v27HEGqnfffVeDBw/W3Llz1bp1az3yyCOaPn26fvjhBxUVFen06dPOfnJzc/Xf//5XM2bMUL169SRJJSUlqqyslCRZrdYqf62oqFBRUZEqKiqcfXh6ekqSPv30U5WXl6u8vFwffPCBGjZs6FwvLy/XpEmTZLPZqv1OEhMTVV5errCwMElSRESE+vbtq6eeekrl5eUXPaagoOCCmmbPnq0GDRpo5MiRF+xfWVmp0tJSnTlzptpaANQOVlcXAADnPfnkk9qyZYs+//xzDRo0yLn96aef1oABA/T666+rQ4cOSklJ0ZAhQ5zt50fAWrRooebNm+uHH36QdG6E7Z///KdSUlKUl5enrl27Kj09/ZKf/+KLL6p79+4aNGiQvv32WzVo0EDDhg3T+vXrq+zXqlWrKutr1qxRz549JUnu7u6Xfb7V7bt7927NnTtX06ZNk4+Pj3P7q6++qi5duujFF1/U1KlTLziuc+fO2r9//0X79Pb2vuTnde/evdrvBkDtQLADUKO88847qlOnjnN90qRJ+u677/T+++/rmmuu0bvvvquHHnpIx44d05gxY5z7WiwWWSwWTZ06VcHBwZKkM2fO6O9//7t69+6tZcuWVfu569at03vvvadNmzZJkkaMGKH8/HytX79eNptNNptNhw8fVps2bfTDDz/o2muvVUVFhUpKSuTr6+vsx83t3IWQO+64w/nnyspKlZWVOUfzJKm8vFy33nrrRWuprKzUI488ouDgYD3++ONV2q677jolJCRozJgxat68uR599NEq7WvXrpXFYpHNZpPVatUzzzyjzz77TF999ZX27dunnJwcRUdHX/CZHh4e1X4/AGoHLsUCcDm73a6dO3cqNzdXx48fV1FRkQzD0PTp0/Xiiy8qKSlJLVu21IwZM3TTTTcpJSVFEydOdIac844ePaojR45o1apVOnHihL755ht5eXnpo48+coasnyovL1dpaamKiop0//33y8/PT0lJSerXr5++/fZbzZs3T02aNJGXl5fq1asnLy8vSZKXl5fq168vT09P+fv7V7mkev4S6OrVq1VSUqKSkhItXbpUDRs2dK6XlJRo4sSJzku8P/fyyy9r8+bNmjdvXpWQe95TTz2lJ554Qo899pjGjRun0tJSZ1toaKhCQkLUvHlzHThwQO+//76SkpLUokULZWVlKTExUU2bNr1g8ff3/21/8wDUKAQ7AC73ySefqEuXLuratauCgoK0cOFC3X///XrmmWeUkJCgoUOH6t1339UzzzyjVatW6aGHHlJGRoauueYadenSxdlPRUWF8vPztWbNGh0+fFhnz57VqVOnlJ+fr4qKCm3atMk5smexWFSnTh298sor8vLy0sMPP6xRo0apa9euSktL07hx4xQZGanMzEx5eXnJzc1NQUFBkqTg4GBZLBZ5enrqnXfeqXIuP7237ZdcbN958+Zp8uTJeuqpp9SoUSPl5ubq4MGDFyzPPvusxo4dq5kzZ6pLly7avHlzlX6OHTumAQMG6O9//7v69+8vSapTp84v3tcHoJYzAKAGkWQsXrzYOHLkiLFs2TLDMAzj1VdfNaxWq/Hee+8ZhmEYU6ZMMU6ePGlUVlY6j3N3dzc+++wzwzAMo3///oYk44UXXjDmzZtnGIZhLFq0yLjpppuM4uJiY/v27Ya7u7tht9uNs2fPVvn82NhY47rrrjOKi4sNwzAMh8NhHD582Dh9+rRRWFhYZTl58qRRWFhY5fjc3FzD3d29yuLm5mZIumB7ZGRklWO///57w93d3YiNjTWGDx9uSKp2mTBhgpGWlmZ0797dOH36tLOfU6dOGd26dfvF488vc+bM+R3+zgGoCbjHDkCN4+XlpaZNm+r6669Xr169tGnTJn3wwQe65557NG/ePE2ZMkXe3t4aM2bMBcfu3LlTa9euVfPmzXXq1CklJCTo5ptvlsPhUN26deXp6ekctWrQoEGVYzds2KDk5GStW7fOeT+ch4eHGjduLMMwLvgsT09P5wxZSTp48KC8vLxUWFgoi8Xi3P7RRx8pNjZWBw8erHK8YRiy2+2y2Wzy9PRUx44dtWnTJt1www0qLCxUQkKCNmzYoL59+2rHjh1q1qyZ89gmTZqoZcuW6tOnj/r06ePcfujQId19993Kz89Xt27dFBYWpokTJ0qSFi1apHfeeUeff/65c//w8HBG8QATIdgBqHHOh6JGjRrJ29tbmzZtUrt27bRkyRINGzZMsbGxGjNmjIqLi1W3bt0qxz711FOKiYnRhg0bFBYWpnvvvVejRo1Snz595Ofnd8nPXLVqlf7617+qc+fO2rx5sxYsWKA6derorbfeUtu2bbV79+6LHrd9+3a1adNGktS2bdtqH6D881rP+9e//qW//vWvkuR8tMn50Ll37175+vrquuuuc+5vt9tVVFSka6+9tko/+/fv14033igvLy+tW7dOY8eOVf369dW8eXNJkp+fn6xWq3NdOjcz92L38QGonbjHDkCNVFpaKh8fH61YsUJBQUF6/PHHNXDgQMXGxuqtt95Senq62rZtW+XesuXLl+urr77S888/75yYMH78eLVp00b79u1TYGDgJT9v2bJlysvL05EjR7Ru3Tp5eXk5H2FSt25dvfbaayouLnYu27dvd7adt2fPHhUXF8swDBmGoeTkZPn5+em1115Tw4YNtW7dOjVs2FA7duyQYRgqKytTXl6e7rvvvkvWlZqaesHs2fMjf+fv+TuvRYsWmj59ur7++muFhIRcxrcMwGwYsQNQ42zbtk1PP/20vvzySy1btkyTJk1SeXm55s6dq7/97W/KyMjQ3XffrYCAANWvX995XP/+/TVw4EA1b95cpaWlKisrU8eOHTVz5kxFRUXpoYceuuRnvvTSS3rppZfUtGnTC9rc3NxktVqrPK7k/OXLn862bdy4sSSprKxMU6dO1euvv65ly5appKREktSjRw/FxMToz3/+s959913dfffdatiw4SVrWrdundauXauPPvqoyvbzrzT7ebCTpMGDBzv/fLHLxz93qZm5AGongh2AGuf5559XVFSU/P39FRUVpbvvvlsJCQkKCgrS0qVLNWTIEIWHhys1NdX5DLmKigoZhqFu3bqppKREcXFx6tChg/Lz83Xq1Clt2LBBs2fPvuRnNm3aVEVFRcrOztauXbu0fft2HT16VK+99pokXfB2hou9VuzkyZNaunSpXnnlFbm7u2vdunUKDw/Xv//9b+c+r7/+uho3bqwHHnhA7du3V0xMjPr166fWrVtX6eurr77SgAED1K9fP/Xt27dK286dO+Xr61sl1F7MT98z+3Pz5s1TRkaGjh49qoCAgGr7AVB7EOwA1BjnL29ed911+vDDD+Xh4aEuXbpowYIFyszMVGxsrFauXKlHH31Ub7zxhnME7fxz3Hr37n3Rfjt37qw77rhDHTp0kHTujRQVFRWqqKiQu7u7SktLFRwcrMOHD8tisSgwMFDXXXedIiIiJJ0b1Ro7dqzGjh17Qd/nR8UMw9Ctt96qo0ePasyYMRozZoxzVK+ioqLKs+YmTJigmJgYzZgxQy+88IICAwOdwS4/P19JSUl6+eWXdfPNN2vRokXO4xYvXqxt27YpJSXFWVt1zj/S5bzKykpnvUeOHNHixYs1bNgwRUVF/WJfAGoJV03HBYCfmzNnjuHr62vs3r3bMAzDyMnJMSZPnmzcfPPNhpubm9GrVy9j48aNl91fRUWFkZmZafj4+Bi7du1ybt+4caMhycjLy3Nu++9//2t8/fXXRkFBwQX9tG7d2njzzTerbNu7d68hydi5c6dz2+7duy94fIphGMaCBQsMm8120Rp/vv8TTzxheHl5GfHx8UZZWVmVtiVLlhjXXHONERMTYxw8eLCaM7+4f/zjH0ZwcLBhGEaVR8UAMA+LYVzGTRgA8Ac5deqU8y0IRUVFioqKUlRUlIYNG6b27dv/pj5LS0v/p1dm7d+/X76+vlXe2XqlVFRU6OjRo9VO9PitZs2apWnTpunIkSO/e98AagaCHQAAgEnwuBMAAACTINgBAACYBMEOAADAJAh2AAAAJnHVPMeusrJShw8flre3d5WXcwMAANRkhmGosLBQzZo1q/K2m4u5aoLd4cOHL/r6HQAAgNogNzdXzZs3r3afqybYeXt7Szr3pTRo0MDF1QAAAFyegoICBQUFObNMda6aYHf+8muDBg0IdgAAoNa5nFvJmDwBAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJEOwAAABMgmAHAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJq6sLgOsdOHBAeXl5ri4DtUSjRo107bXXuroMAMBFEOyucgcOHFDbdu1UXFTk6lJQS9T18tL2nBzCHQDUQC4NdidPntSOHTt03XXXqVGjRq4s5aqVl5en4qIiPfjSbDUObu3qclDDHd+7S0snxiovL49gBwA1kMuC3eLFixUbG6uWLVtqx44deu+99zRw4ECNHDlSSUlJzv1CQkK0e/duSVJWVpaGDh2q3bt3a9iwYXrllVdksVhcdQqm0ji4tQLbdXF1GQAA4H/gkskTp0+f1siRI/Xll18qMzNT77zzjp599llJ0pYtW7Ry5Url5+crPz9fmZmZkiSHw6F+/fopLCxMGRkZys7OVkpKiivKBwAAqJFcEuwKCws1a9YsdezYUZLUpUsX5efnq7y8XFlZWYqKipKvr698fX3l7e0tSUpLS5PdbtfMmTMVEhKi+Ph4zZ071xXlAwAA1EguCXZBQUGKiYmRJJWVlWnGjBm67777tG3bNhmGoa5du6pu3brq06ePDhw4IEnaunWrIiIi5OXlJUnq3LmzsrOzXVE+AABAjeTS59ht3bpVTZo00erVqzVr1izl5OSoQ4cOWrRokbKzs1WnTh0NHz5cklRQUKDg4GDnsRaLRe7u7srPz79o3w6HQwUFBVUWAAAAM3NpsOvcubM+/fRTdejQQUOHDlVMTIzS09MVHh6u4OBgJSUlafXq1SooKJDVapXNZqtyvKenp4ou8ZiOhIQE+fj4OJegoKA/4pQAAABcxqXBzmKx6Prrr1dKSopSU1MvGH3z9fVVZWWljhw5In9/f504caJKe2FhoTw8PC7a9/jx42W3251Lbm7uFTsPAACAmsAlwW7dunWKi4tzrlut55668sILL2jp0qXO7Zs3b5abm5uCgoIUHh6u9PR0Z9u+ffvkcDjk7+9/0c+w2Wxq0KBBlQUAAMDMXPIcu7Zt2yo6OlqtW7fWnXfeqYkTJ+qOO+7Q9ddfrwkTJqhp06YqLy/XyJEjNWTIEHl5eSkqKkp2u13z58/X4MGDlZiYqJ49e8rd3d0VpwAAAFDjuCTYNWvWTMuWLdPTTz+tcePGqXfv3vrXv/6lgIAA5eTkqH///vL29ta9996r+Pj4c4VarUpOTtagQYMUFxeniooKrV+/3hXlAwAA1Egue/NE7969L/q4koSEBCUkJFz0mOjoaO3atUsZGRmKjIxUQEDAlS4TAACg1nDpu2J/i8DAQAUGBrq6DAAAgBrHpbNiAQAA8Psh2AEAAJgEwQ4AAMAkCHYAAAAmQbADAAAwCYIdAACASRDsAAAATIJgBwAAYBIEOwAAAJMg2AEAAJgEwQ4AAMAkCHYAAAAmQbADAAAwCYIdAACASRDsAAAATIJgBwAAYBIEOwAAAJMg2AEAAJgEwQ4AAMAkCHYAAAAmQbADAAAwCYIdAACASRDsAAAATIJgBwAAYBIEOwAAAJMg2AEAAJgEwQ4AAMAkCHYAAAAmQbADAAAwCYIdAACASRDsAAAATIJgBwAAYBIEOwAAAJMg2AEAAJgEwQ4AAMAkCHYAAAAmQbADAAAwCZcGu5MnT2rDhg3Ky8tzZRkAAACm4LJgt3jxYoWGhuqJJ57Qtddeq8WLF0uSsrKyFB4eLj8/P8XFxckwDOcx1bUBAABc7VwS7E6fPq2RI0fqyy+/VGZmpt555x09++yzcjgc6tevn8LCwpSRkaHs7GylpKRIUrVtAAAAcFGwKyws1KxZs9SxY0dJUpcuXZSfn6+0tDTZ7XbNnDlTISEhio+P19y5cyWp2jYAAABIVld8aFBQkGJiYiRJZWVlmjFjhu677z5t3bpVERER8vLykiR17txZ2dnZklRt28U4HA45HA7nekFBwZU6HQAAgBrBpZMntm7dqiZNmmj16tWaNWuWCgoKFBwc7Gy3WCxyd3dXfn5+tW0Xk5CQIB8fH+cSFBR0xc8HAADAlVwa7Dp37qxPP/1UHTp00NChQ2W1WmWz2ars4+npqaKiomrbLmb8+PGy2+3OJTc394qdBwAAQE3g0mBnsVh0/fXXKyUlRampqfL399eJEyeq7FNYWCgPD49q2y7GZrOpQYMGVRYAAAAzc0mwW7duneLi4pzrVuu5W/3atm2r9PR05/Z9+/bJ4XDI399f4eHhl2wDAACAi4Jd27Zt9c477yg5OVm5ubl67rnndMcdd+juu++W3W7X/PnzJUmJiYnq2bOn3N3dFRUVdck2AAAAuCjYNWvWTMuWLdOsWbPUoUMHFRUV6V//+pesVquSk5M1YsQINWnSRMuXL1diYqIkVdsGAAAAFz3uRJJ69+590ceVREdHa9euXcrIyFBkZKQCAgIuqw0AAOBq57JgV53AwEAFBgb+6jYAAICrmUtnxQIAAOD3Q7ADAAAwCYIdAACASRDsAAAATIJgBwAAYBIEOwAAAJMg2AEAAJgEwQ4AAMAkCHYAAAAmQbADAAAwCYIdAACASRDsAAAATIJgBwAAYBIEOwAAAJMg2AEAAJgEwQ4AAMAkCHYAAAAmQbADAAAwCYIdAACASRDsAAAATIJgBwAAYBIEOwAAAJMg2AEAAJgEwQ4AAMAkCHYAAAAmQbADAAAwCYIdAACASRDsAAAATIJgBwAAYBIEOwAAAJMg2AEAAJgEwQ4AAMAkCHYAAAAmQbADAAAwCYIdAACASRDsAAAATIJgBwAAYBIuC3apqalq1aqVrFarunfvrpycHEnSyJEjZbFYnEtoaKjzmKysLIWHh8vPz09xcXEyDMNV5QMAANQ4Lgl2P/74o4YOHarExEQdOnRILVq00LBhwyRJW7Zs0cqVK5Wfn6/8/HxlZmZKkhwOh/r166ewsDBlZGQoOztbKSkprigfAACgRnJJsMvJyVF8fLwefPBBNWnSRLGxscrIyFB5ebmysrIUFRUlX19f+fr6ytvbW5KUlpYmu92umTNnKiQkRPHx8Zo7d64rygcAAKiRXBLs+vbtqxEjRjjXd+zYodDQUG3btk2GYahr166qW7eu+vTpowMHDkiStm7dqoiICHl5eUmSOnfurOzsbFeUDwAAUCO5fPJEaWmpZsyYoccff1w5OTnq0KGDFi1apOzsbNWpU0fDhw+XJBUUFCg4ONh5nMVikbu7u/Lz8y/ar8PhUEFBQZUFAADAzKyuLmDixImqX7++HnvsMdWpU0cxMTHOtqSkJLVq1UoFBQWyWq2y2WxVjvX09FRRUZH8/Pwu6DchIUFTp0694vUDAADUFC4dsVuzZo3efvttLVy4UHXq1Lmg3dfXV5WVlTpy5Ij8/f114sSJKu2FhYXy8PC4aN/jx4+X3W53Lrm5uVfkHAAAAGoKlwW7PXv2KCYmRrNnz1b79u0lSWPGjNHSpUud+2zevFlubm4KCgpSeHi40tPTnW379u2Tw+GQv7//Rfu32Wxq0KBBlQUAAMDMXHIptri4WH379lV0dLT69++vM2fOSJK6dOmiCRMmqGnTpiovL9fIkSM1ZMgQeXl5KSoqSna7XfPnz9fgwYOVmJionj17yt3d3RWnAAAAUOO4JNitWrVKOTk5ysnJ0Zw5c5zb9+7dq+3bt6t///7y9vbWvffeq/j4+HOFWq1KTk7WoEGDFBcXp4qKCq1fv94V5QMAANRILgl20dHRl3xrREJCghISEi553K5du5SRkaHIyEgFBARcyTIBAABqFZfPiv21AgMDFRgY6OoyAAAAahyXP8cOAAAAvw+CHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTsLq6AACAuR04cEB5eXmuLgO1RKNGjXTttde6uoxai2AHALhiDhw4oLbt2qm4qMjVpaCWqOvlpe05OYS734hgBwC4YvLy8lRcVKQHX5qtxsGtXV0Oarjje3dp6cRY5eXlEex+I4IdAOCKaxzcWoHturi6DMD0mDwBAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACbhsmCXmpqqVq1ayWq1qnv37srJyZEkZWVlKTw8XH5+foqLi5NhGM5jqmsDAAC42rkk2P34448aOnSoEhMTdejQIbVo0ULDhg2Tw+FQv379FBYWpoyMDGVnZyslJUWSqm0DAACAi4JdTk6O4uPj9eCDD6pJkyaKjY1VRkaG0tLSZLfbNXPmTIWEhCg+Pl5z586VpGrbAAAA4KIHFPft27fK+o4dOxQaGqqtW7cqIiJCXl5ekqTOnTsrOztbkqptuxiHwyGHw+FcLygo+L1PAwAAoEZx+eSJ0tJSzZgxQ48//rgKCgoUHBzsbLNYLHJ3d1d+fn61bReTkJAgHx8f5xIUFHTFzwUAAMCVfnOwu+222y7Z9vjjj192PxMnTlT9+vX12GOPyWq1ymazVWn39PRUUVFRtW0XM378eNntdueSm5t72TUBAADURpd9KfbgwYOqW7euysvLZbPZVFBQoGPHjunw4cNyc3OTp6enPvvsMw0ZMkSZmZmX1eeaNWv09ttvKz09XXXq1JG/v7+ysrKq7FNYWCgPD49q2y7GZrNdEAQBAADM7LKDXWhoqCwWi3x8fPTYY4/J19dXH3zwgRISEpSfn6/evXvryJEjGjJkiDw9PX+xvz179igmJkazZ89W+/btJUnh4eF69913nfvs27dPDodD/v7+1bYBAADgV1yKvemmmxQeHq7U1FQZhiE3t3OHJiUl6frrr1f79u1ltVovK9QVFxerb9++io6OVv/+/XXmzBmdOXNGt9xyi+x2u+bPny9JSkxMVM+ePeXu7q6oqKhLtgEAAOA3zIq1WCyXta06q1atUk5OjnJycjRnzhzn9r179yo5OVmDBg1SXFycKioqtH79+nOFWq2XbAMAAMDv8LiT7777TqdPn9bevXt1+vRprV69WoWFhdUeEx0dfcm3RrRs2VK7du1SRkaGIiMjFRAQUOW4S7UBAABc7f7nYJeWlqbDhw+rtLRUJ0+e1OzZs3XixIn/qc/AwEAFBgb+6jYAAICr2f/8HLvx48erXbt2GjBggNq1a6cPP/xQrVq1+j1qAwAAwK/wuzyg2GKx/Or77AAAAPD7uuxLsfv375dhGEpJSVHDhg2d98h99NFHOnz4sI4dOybDMFRRUXHFigUAAMClXfaI3cCBA/W3v/1NjRs3VlRUlM6cOaPWrVvLMAz16NFDoaGhcjgczoAHAACAP9Zlj9jFx8dXWR89erR69eqlXr16Obc99dRTqlOnjux2++9XIQAAAC7Lb77HLi4u7oJtderUkXTuOXUAAAD4Y/3qYOdwOHT33Xdr6NChl9znpZde0g8//PA/FQYAAIBf51cHO5vNpjVr1qh9+/bq1auXnnzySS1cuFB5eXmSpHnz5mnBggVq0KDB714sAAAALu03PaC4efPm+vDDD3XkyBHt3btXa9eu1dixYxUZGamvvvpKK1euVFBQ0O9dKwAAAKpx2cHupZdeUkBAgHr16iWr1ao2bdqoTZs2ioiIkLe3t7Zu3arMzEyFhIQoLCzsStYMAACAi7jsS7Fubm7673//q7CwMB06dEiDBw9WZGSkWrdurQ8//FDTpk3Tnj171K1bN40YMeJK1gwAAICLuOwRu7Fjx8pms2nXrl1avHixDh48qB9++EFDhw7VrFmznPtNmTJFN998s7788kvdcsstV6JmAAAAXMRlB7v/83/+j7799lvdcsstOnr0qMaMGaOSkhLddddd6tSpkx555BENHDhQPXr00LRp02S1/qbb9wAAAPAbXXb6evXVV/XVV1/pm2++0fHjxzV27FhNmDBBkZGROnnypPbv36/27dtr0KBBuu+++65kzQAAALiIyw52nTp1koeHh86cOaOCggIFBQVp3LhxevPNN1W/fn29+eabOn78uD766CONHTtWrVu3vpJ1AwAA4Gcue/LEP/7xD02fPl1PPPGEjh8/rpCQEM2aNUvDhg3TsWPHtHDhQm3fvl0LFizQk08+eSVrBgAAwEVcdrCz2Wx67LHHdPbsWT300EOy2+36/vvvtWXLFnl6eurjjz9W27Zt1aNHDzkcDmVmZl7JugEAAPAzl30p9vDhw1qwYIGOHTumAwcO6K233tKNN96ovn37qk6dOlq4cKGKi4slSQMHDtSPP/6o66+//ooVDgAAgKouO9hFR0c7/9y/f39J0ueff64mTZooPT1dklS3bl1J0qOPPip3d/ffsUwAAAD8kl/9rtifuuaaaySde8XYTxHqAAAA/nj/U7ADAABAzUGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJuGyYHfy5EkFBwdr3759zm0jR46UxWJxLqGhoc62rKwshYeHy8/PT3FxcTIMwwVVAwAA1FwuCXZ5eXnq27dvlVAnSVu2bNHKlSuVn5+v/Px8ZWZmSpIcDof69eunsLAwZWRkKDs7WykpKX984QAAADWYS4LdwIEDNXDgwCrbysvLlZWVpaioKPn6+srX11fe3t6SpLS0NNntds2cOVMhISGKj4/X3LlzXVE6AABAjeWSYJecnKzRo0dX2bZt2zYZhqGuXbuqbt266tOnjw4cOCBJ2rp1qyIiIuTl5SVJ6ty5s7Kzs//wugEAAGoylwS7Vq1aXbAtJydHHTp00KJFi5Sdna06depo+PDhkqSCggIFBwc797VYLHJ3d1d+fv4lP8PhcKigoKDKAgAAYGZWVxdwXkxMjGJiYpzrSUlJatWqlQoKCmS1WmWz2ars7+npqaKiIvn5+V20v4SEBE2dOvWK1gwAAFCT1NjHnfj6+qqyslJHjhyRv7+/Tpw4UaW9sLBQHh4elzx+/PjxstvtziU3N/dKlwwAAOBSNSbYjRkzRkuXLnWub968WW5ubgoKClJ4eLjS09Odbfv27ZPD4ZC/v/8l+7PZbGrQoEGVBQAAwMxqzKXYrl27asKECWratKnKy8s1cuRIDRkyRF5eXoqKipLdbtf8+fM1ePBgJSYmqmfPnnJ3d3d12QAAADVGjQl2gwcPVk5Ojvr37y9vb2/de++9io+PlyRZrVYlJydr0KBBiouLU0VFhdavX+/iigEAAGoWlwa7n789IiEhQQkJCRfdNzo6Wrt27VJGRoYiIyMVEBDwR5QIAABQa9SYEbvLERgYqMDAQFeXAQAAUCPVmMkTAAAA+N8Q7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJFwW7E6ePKng4GDt27fPuS0rK0vh4eHy8/NTXFycDMO4rDYAAAC4KNjl5eWpb9++VUKdw+FQv379FBYWpoyMDGVnZyslJeUX2wAAAHCOS4LdwIEDNXDgwCrb0tLSZLfbNXPmTIWEhCg+Pl5z5879xTYAAACc45Jgl5ycrNGjR1fZtnXrVkVERMjLy0uS1LlzZ2VnZ/9i26U4HA4VFBRUWQAAAMzMJcGuVatWF2wrKChQcHCwc91iscjd3V35+fnVtl1KQkKCfHx8nEtQUNDvexIAAAA1TI2ZFWu1WmWz2aps8/T0VFFRUbVtlzJ+/HjZ7Xbnkpube0XqBgAAqCmsri7gPH9/f2VlZVXZVlhYKA8Pj2rbLsVms10QBgEAAMysxozYhYeHKz093bm+b98+ORwO+fv7V9sGAACAc2pMsIuKipLdbtf8+fMlSYmJierZs6fc3d2rbQMAAMA5NeZSrNVqVXJysgYNGqS4uDhVVFRo/fr1v9gGAACAc1wa7H7+9ojo6Gjt2rVLGRkZioyMVEBAwGW1AQAAoAaN2J0XGBiowMDAX90GAABwtasx99gBAADgf0OwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASBDsAAACTINgBAACYBMEOAADAJAh2AAAAJkGwAwAAMAmCHQAAgEkQ7AAAAEyCYAcAAGASNS7YjRw5UhaLxbmEhoZKkrKyshQeHi4/Pz/FxcXJMAwXVwoAAFCz1Lhgt2XLFq1cuVL5+fnKz89XZmamHA6H+vXrp7CwMGVkZCg7O1spKSmuLhUAAKBGqVHBrry8XFlZWYqKipKvr698fX3l7e2ttLQ02e12zZw5UyEhIYqPj9fcuXNdXS4AAECNUqOC3bZt22QYhrp27aq6deuqT58+OnDggLZu3aqIiAh5eXlJkjp37qzs7Oxq+3I4HCooKKiyAAAAmFmNCnY5OTnq0KGDFi1apOzsbNWpU0fDhw9XQUGBgoODnftZLBa5u7srPz//kn0lJCTIx8fHuQQFBf0RpwAAAOAyNSrYxcTEKD09XeHh4QoODlZSUpJWr16tyspK2Wy2Kvt6enqqqKjokn2NHz9edrvdueTm5l7p8gEAAFzK6uoCquPr66vKyko1bdpUWVlZVdoKCwvl4eFxyWNtNtsFYRAAAMDMatSI3ZgxY7R06VLn+ubNm+Xm5qZOnTopPT3duX3fvn1yOBzy9/d3RZkAAAA1Uo0asevatasmTJigpk2bqry8XCNHjtSQIUN0xx13yG63a/78+Ro8eLASExPVs2dPubu7u7pkAACAGqNGBbvBgwcrJydH/fv3l7e3t+69917Fx8fLarUqOTlZgwYNUlxcnCoqKrR+/XpXlwsAAFCj1KhgJ52bzZqQkHDB9ujoaO3atUsZGRmKjIxUQECAC6oDAACouWpcsKtOYGCgAgMDXV0GAABAjVSjJk8AAADgtyPYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJEOwAAABMgmAHAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJEOwAAABMgmAHAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJEOwAAABMgmAHAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJEOwAAABMgmAHAABgEgQ7AAAAkyDYAQAAmATBDgAAwCQIdgAAACZBsAMAADAJgh0AAIBJ1Lpgl5WVpfDwcPn5+SkuLk6GYbi6JAAAgBqhVgU7h8Ohfv36KSwsTBkZGcrOzlZKSoqrywIAAKgRalWwS0tLk91u18yZMxUSEqL4+HjNnTvX1WUBAADUCFZXF/BrbN26VREREfLy8pIkde7cWdnZ2Rfd1+FwyOFwONftdrskqaCg4MoXWoucOXNGknQoZ5tKi866uBrUdCf2/yjp3D83/LuEy8FvDH4NfmMu7vx3cTm3n1mMWnST2tixY1VSUqK33nrLuS0gIEA7d+6Un59flX2nTJmiqVOn/tElAgAAXBG5ublq3rx5tfvUqhE7q9Uqm81WZZunp6eKioouCHbjx4/XmDFjnOuVlZU6deqUGjZsKIvF8ofUi9qroKBAQUFBys3NVYMGDVxdDgCT4TcGv4ZhGCosLFSzZs1+cd9aFez8/f2VlZVVZVthYaE8PDwu2Ndms10QAn19fa9keTChBg0a8KML4IrhNwaXy8fH57L2q1WTJ8LDw5Wenu5c37dvnxwOh/z9/V1YFQAAQM1Qq4JdVFSU7Ha75s+fL0lKTExUz5495e7u7uLKAAAAXK9WXYq1Wq1KTk7WoEGDFBcXp4qKCq1fv97VZcGEbDabJk+efMHlfAD4PfAbgyulVs2KPe/QoUPKyMhQZGSkAgICXF0OAABAjVArgx0AAAAuVKvusQMAAMClEewAAABMgmAHAABgEgQ7AAAAkyDYAdX46dyizz//XCdOnHBhNQDMyuFwSJIqKipcXAlqO4IdUI3z7xWeOnWqZs+erfr167u4IgBmkJeXp9dff11r1qxRcXGxbDabTp8+rRUrVui7775zdXmoxWrVA4qBP0plZaUKCgrk6+ur6dOnKzs7W/PmzdOhQ4fk5eUlT09P+fn5ubpMALVUbm6unnvuOUVERCgvL0+NGzfW7t275e/vr+joaHXt2tXVJaKWItgBP2MYhrZu3arhw4erY8eOKi8v1/z58zV16lQtXbpUt912m8LCwjR06FBZrVa5uTHwDeDXadasmYKDgzVs2DDdfPPNKiwsVElJiTw8PNSlSxdJ536Lzl81AC4X/0UCfsZisahNmzbOQHfXXXdp7ty5+uSTT3TDDTdo586d2rNnjzw8PAh1AC6bYRjOpUmTJoqJidGmTZvk7e2tpKQkWa1WLV26VDNmzFBRUZE2bNig3bt3u7ps1DL8Vwn4f346UeLtt99WWFiYFi5cqJiYGM2aNUtJSUkaNGiQDhw4oO+//14bN25UeXm5CysGUJuUl5fLYrE4R+F8fX2VkZGhhg0b6ssvv1T9+vVVWVmprVu36vDhw+rfv7+ys7NdXDVqG4Id8P+c/7F97bXXtHHjRr355ps6deqUQkNDtXv3bqWmpmrTpk0KDQ1VfHy8Nm3apOLiYknSsWPHXFk6gBru66+/VkREhO644w4tWbJEktSuXTtZrVadPXtWZ8+elY+PjwzDUFlZmYKDg+Xn56fQ0FAXV47ahnvsgJ949dVX9eabb2rLli2aMGGCPv/8cyUnJ+vTTz/Vyy+/rGbNmun555/X2bNnNW3aNIWEhGj58uUKDAzUmDFj1KhRI1efAoAayNvbW6NHj9bRo0fVrl07SdKXX36p8vJynThxQh4eHrLZbCoqKlJISIhOnTqlwsJCeXt7u7hy1DYEO+AnWrRooYqKCn3//fcKCgpSXFycHA6HTpw4oa5duyozM1PTp0/XX//6V/n6+mrevHkqKyvTww8/rHr16rm6fAA1yE8nP3Tu3FmdO3d2ti1dulReXl5KTU3Vjz/+qB49eujs2bP64osvNGrUKO3du1dubm7y8PBwVfmopQh2uGr99Ee3pKREnp6eeuCBB2QYhmJjY9W3b18FBwdr7ty5OnbsmLZs2aIpU6bopZdeUmRkpCZPnuziMwBQk1ksFpWWlsputysgIMC5/Z577tHmzZs1YMAAHTx4UBEREYqIiNCePXvk7e2ttm3b6pNPPtFDDz2kJk2auPAMUBtxjx2uWmVlZZKkl156SePGjVNJSYn27NmjAQMGaNq0aVqxYoUOHz6sAQMGaODAgdq2bZtOnjyp0aNHq3fv3lq3bp2zr59OvABwdTtw4IBOnz4tSerZs6d27dqlgoICTZkyRf/4xz8UHBys1NRUnT17VikpKdqwYYOWLl2qRo0a6dVXX9VNN92kzz//XG3btnXtiaBWYsQOV53zI3XDhw/XmjVr1Lp1a11zzTXq1KmTevTooeTkZN1zzz0qKSnRiBEjlJycrICAAI0ZM0Y7d+7UunXrtH37dqWnp6tHjx5VZrkBuLpVVlbqk08+0WeffabCwkKdPXtW06dP19GjR+Xp6alDhw5p69atqlu3rhwOh5KTk5WWlqYVK1bowIEDGjdunBITE1VSUqJHH33U1aeDWohgh6vO+RAWGBio4uJitWnTRn5+ftq8ebMaN26siooKubm56cEHH9Tx48c1evRoffHFF/roo48UHR2tH3/8UZWVlbr//vsJdACqcHNzU3l5uZYsWaIlS5aocePGGjhwoN544w0NGDBAQ4YM0cCBA7VgwQLdcsstcnNz05w5c5STk6OSkhJJUlRUlO68805J54Iiz8vEr0Gww1Xjp/fUffzxx9qxY4eOHTumkJAQ2Ww2bdmyRTfeeKPuvfdetW7dWvXq1dOTTz6p7777Tu+//746duyoxo0b6/bbb1dkZCSz1QA4nf99sdvt6t69uwYMGKAbb7xRgwcPlo+Pj1atWqUBAwbo5MmTOnLkiPr27au0tDTdfPPNqlu3rjIzM53PxYyMjHT2S6jDr8U/MbhqnA917733noqKirRs2TKNGjVKN998s/z9/RUREaGnnnpKnTp10qhRo3T48GFJUrdu3bRq1Sr179/f+XT4+vXru/JUANQg50Ndbm6uYmJilJqaqo0bN2rEiBEKDQ3V9u3bdfz4cQUGBqpnz5766quvtHfvXt133306c+aMbrjhBr300ktq1aqVq08FJmAxuOsbV4GysjKtXbtW27Zt0/jx49WqVSstXrxYGRkZ+vvf/66//e1v+uqrr3TDDTfo+PHjGjVqlFq3bq2NGzeqW7dumjJliiZPnqwbb7zR1acCoAY6dOiQ+vTpoy5dumjBggVavXq18vPzlZWVpdDQUC1btkz79u1TmzZt5Obmph49emjHjh369ttvtXr1atWtW9fVpwCTYMQOV4Vvv/1Wy5Yt0+23367KykrFxsYqNTVVQ4YM0axZs3TnnXfq+++/19q1a1VZWamoqCg9/PDDioqK0v79+/XKK6+oW7durj4NADXQvn37dM8996hOnTpq1qyZpHOvD/Px8VGXLl30n//8Rx4eHsrIyFB6err279+vxx9/XK+//rry8vK0du1aF58BzIRgh6tC9+7dZRiGnnzySUlSv379tHfvXt12223Kyspy3js3e/ZslZaWql27dlqxYoUOHTqkBx98kBuYAVySm5ubhg4dqhUrVqi0tFRTp07VnDlztHjxYp09e1YPPPCAmjdvrm7dumnSpElq0qSJBg4cqLNnz2r48OHq16+fq08BJsKlWJje+ftfioqK1KpVK/3pT3/S8uXL1adPH1VWVmrQoEGyWq1q0KCBOnXqpL59+6pevXpyOBzKzc3VJ598wiVYAJdl9OjRmj9/vpKSklRQUKD9+/erbdu2Kioq0qpVq/T222/rmmuu0ZgxYzR8+HC1adNGUtXJXcD/giEImJ7FYpFhGLLZbLrrrru0YsUKjR49Wp988olWr16t0tJS7dixQ61atdLy5cuVmJioCRMm6NChQ1q/fj2hDsAvOj9G8txzz8nDw0OfffaZYmNjFRYWpl27dsnDw0MlJSV68803JUkzZ850hjpJhDr8bnjcCa4KFotF7u7uio2NlcPhUGZmpu666y69+uqr2rVrl/75z3/q008/1V133aWdO3dq+fLlWrNmjTp16uTq0gHUAueDmc1mU/369TVv3jwVFhZqyZIlevvtt3XgwAHdeOON+uGHH5Sfny8/Pz9JjNTh98elWFxViouLlZubq+uuu06PPPKITp48qUWLFiklJUUJCQmKiYnRvffeq5YtWzpvggaAy1VWVqZPP/1Ubdq00ZNPPqktW7bohhtuUFxcnIqKinTq1Ck9/PDDri4TJkaww1Xnp/+H/Je//EXu7u5auHChJk+erOuvv17R0dGuLRCAaTz44IMqLCxUWlpale2M1OFK4R47XHUsFosqKyslSUuWLFF5ebk6d+6sgIAA3XDDDS6uDoAZnP+NWbp0qVq0aKGPP/64SjuhDlcKI3a4av30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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "# 设置字体为SimHei，以正常显示中文标签\n",
    "plt.rcParams[\"font.family\"]=['SimHei'] \n",
    "plt.rcParams['font.sans-serif']=['SimHei'] \n",
    "# 用来正常显示负号\n",
    "plt.rcParams['axes.unicode_minus']=False \n",
    "\n",
    "# 显示y的柱状图\n",
    "y.value_counts().plot(kind='bar', color='skyblue', edgecolor='black')\n",
    "plt.title('诊断结果分布')\n",
    "plt.xlabel('诊断结果')\n",
    "plt.ylabel('数量')\n",
    "plt.xticks(rotation=45)\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "777ac3aa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>平均半径</th>\n",
       "      <th>平均纹理</th>\n",
       "      <th>平均周长</th>\n",
       "      <th>平均面积</th>\n",
       "      <th>平均光滑度</th>\n",
       "      <th>平均致密度</th>\n",
       "      <th>平均凹度</th>\n",
       "      <th>平均凹点数</th>\n",
       "      <th>平均对称性</th>\n",
       "      <th>平均分形维度</th>\n",
       "      <th>...</th>\n",
       "      <th>最差半径</th>\n",
       "      <th>最差纹理</th>\n",
       "      <th>最差周长</th>\n",
       "      <th>最差面积</th>\n",
       "      <th>最差光滑度</th>\n",
       "      <th>最差致密度</th>\n",
       "      <th>最差凹度</th>\n",
       "      <th>最差凹点数</th>\n",
       "      <th>最差对称性</th>\n",
       "      <th>最差分形维度</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "      <td>569.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>14.127292</td>\n",
       "      <td>19.289649</td>\n",
       "      <td>91.969033</td>\n",
       "      <td>654.889104</td>\n",
       "      <td>0.096360</td>\n",
       "      <td>0.104341</td>\n",
       "      <td>0.088799</td>\n",
       "      <td>0.048919</td>\n",
       "      <td>0.181162</td>\n",
       "      <td>0.062798</td>\n",
       "      <td>...</td>\n",
       "      <td>16.269190</td>\n",
       "      <td>25.677223</td>\n",
       "      <td>107.261213</td>\n",
       "      <td>880.583128</td>\n",
       "      <td>0.132369</td>\n",
       "      <td>0.254265</td>\n",
       "      <td>0.272188</td>\n",
       "      <td>0.114606</td>\n",
       "      <td>0.290076</td>\n",
       "      <td>0.083946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.524049</td>\n",
       "      <td>4.301036</td>\n",
       "      <td>24.298981</td>\n",
       "      <td>351.914129</td>\n",
       "      <td>0.014064</td>\n",
       "      <td>0.052813</td>\n",
       "      <td>0.079720</td>\n",
       "      <td>0.038803</td>\n",
       "      <td>0.027414</td>\n",
       "      <td>0.007060</td>\n",
       "      <td>...</td>\n",
       "      <td>4.833242</td>\n",
       "      <td>6.146258</td>\n",
       "      <td>33.602542</td>\n",
       "      <td>569.356993</td>\n",
       "      <td>0.022832</td>\n",
       "      <td>0.157336</td>\n",
       "      <td>0.208624</td>\n",
       "      <td>0.065732</td>\n",
       "      <td>0.061867</td>\n",
       "      <td>0.018061</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>6.981000</td>\n",
       "      <td>9.710000</td>\n",
       "      <td>43.790000</td>\n",
       "      <td>143.500000</td>\n",
       "      <td>0.052630</td>\n",
       "      <td>0.019380</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.106000</td>\n",
       "      <td>0.049960</td>\n",
       "      <td>...</td>\n",
       "      <td>7.930000</td>\n",
       "      <td>12.020000</td>\n",
       "      <td>50.410000</td>\n",
       "      <td>185.200000</td>\n",
       "      <td>0.071170</td>\n",
       "      <td>0.027290</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.156500</td>\n",
       "      <td>0.055040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>11.700000</td>\n",
       "      <td>16.170000</td>\n",
       "      <td>75.170000</td>\n",
       "      <td>420.300000</td>\n",
       "      <td>0.086370</td>\n",
       "      <td>0.064920</td>\n",
       "      <td>0.029560</td>\n",
       "      <td>0.020310</td>\n",
       "      <td>0.161900</td>\n",
       "      <td>0.057700</td>\n",
       "      <td>...</td>\n",
       "      <td>13.010000</td>\n",
       "      <td>21.080000</td>\n",
       "      <td>84.110000</td>\n",
       "      <td>515.300000</td>\n",
       "      <td>0.116600</td>\n",
       "      <td>0.147200</td>\n",
       "      <td>0.114500</td>\n",
       "      <td>0.064930</td>\n",
       "      <td>0.250400</td>\n",
       "      <td>0.071460</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>13.370000</td>\n",
       "      <td>18.840000</td>\n",
       "      <td>86.240000</td>\n",
       "      <td>551.100000</td>\n",
       "      <td>0.095870</td>\n",
       "      <td>0.092630</td>\n",
       "      <td>0.061540</td>\n",
       "      <td>0.033500</td>\n",
       "      <td>0.179200</td>\n",
       "      <td>0.061540</td>\n",
       "      <td>...</td>\n",
       "      <td>14.970000</td>\n",
       "      <td>25.410000</td>\n",
       "      <td>97.660000</td>\n",
       "      <td>686.500000</td>\n",
       "      <td>0.131300</td>\n",
       "      <td>0.211900</td>\n",
       "      <td>0.226700</td>\n",
       "      <td>0.099930</td>\n",
       "      <td>0.282200</td>\n",
       "      <td>0.080040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>15.780000</td>\n",
       "      <td>21.800000</td>\n",
       "      <td>104.100000</td>\n",
       "      <td>782.700000</td>\n",
       "      <td>0.105300</td>\n",
       "      <td>0.130400</td>\n",
       "      <td>0.130700</td>\n",
       "      <td>0.074000</td>\n",
       "      <td>0.195700</td>\n",
       "      <td>0.066120</td>\n",
       "      <td>...</td>\n",
       "      <td>18.790000</td>\n",
       "      <td>29.720000</td>\n",
       "      <td>125.400000</td>\n",
       "      <td>1084.000000</td>\n",
       "      <td>0.146000</td>\n",
       "      <td>0.339100</td>\n",
       "      <td>0.382900</td>\n",
       "      <td>0.161400</td>\n",
       "      <td>0.317900</td>\n",
       "      <td>0.092080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>28.110000</td>\n",
       "      <td>39.280000</td>\n",
       "      <td>188.500000</td>\n",
       "      <td>2501.000000</td>\n",
       "      <td>0.163400</td>\n",
       "      <td>0.345400</td>\n",
       "      <td>0.426800</td>\n",
       "      <td>0.201200</td>\n",
       "      <td>0.304000</td>\n",
       "      <td>0.097440</td>\n",
       "      <td>...</td>\n",
       "      <td>36.040000</td>\n",
       "      <td>49.540000</td>\n",
       "      <td>251.200000</td>\n",
       "      <td>4254.000000</td>\n",
       "      <td>0.222600</td>\n",
       "      <td>1.058000</td>\n",
       "      <td>1.252000</td>\n",
       "      <td>0.291000</td>\n",
       "      <td>0.663800</td>\n",
       "      <td>0.207500</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 30 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             平均半径        平均纹理        平均周长         平均面积       平均光滑度  \\\n",
       "count  569.000000  569.000000  569.000000   569.000000  569.000000   \n",
       "mean    14.127292   19.289649   91.969033   654.889104    0.096360   \n",
       "std      3.524049    4.301036   24.298981   351.914129    0.014064   \n",
       "min      6.981000    9.710000   43.790000   143.500000    0.052630   \n",
       "25%     11.700000   16.170000   75.170000   420.300000    0.086370   \n",
       "50%     13.370000   18.840000   86.240000   551.100000    0.095870   \n",
       "75%     15.780000   21.800000  104.100000   782.700000    0.105300   \n",
       "max     28.110000   39.280000  188.500000  2501.000000    0.163400   \n",
       "\n",
       "            平均致密度        平均凹度       平均凹点数       平均对称性      平均分形维度  ...  \\\n",
       "count  569.000000  569.000000  569.000000  569.000000  569.000000  ...   \n",
       "mean     0.104341    0.088799    0.048919    0.181162    0.062798  ...   \n",
       "std      0.052813    0.079720    0.038803    0.027414    0.007060  ...   \n",
       "min      0.019380    0.000000    0.000000    0.106000    0.049960  ...   \n",
       "25%      0.064920    0.029560    0.020310    0.161900    0.057700  ...   \n",
       "50%      0.092630    0.061540    0.033500    0.179200    0.061540  ...   \n",
       "75%      0.130400    0.130700    0.074000    0.195700    0.066120  ...   \n",
       "max      0.345400    0.426800    0.201200    0.304000    0.097440  ...   \n",
       "\n",
       "             最差半径        最差纹理        最差周长         最差面积       最差光滑度  \\\n",
       "count  569.000000  569.000000  569.000000   569.000000  569.000000   \n",
       "mean    16.269190   25.677223  107.261213   880.583128    0.132369   \n",
       "std      4.833242    6.146258   33.602542   569.356993    0.022832   \n",
       "min      7.930000   12.020000   50.410000   185.200000    0.071170   \n",
       "25%     13.010000   21.080000   84.110000   515.300000    0.116600   \n",
       "50%     14.970000   25.410000   97.660000   686.500000    0.131300   \n",
       "75%     18.790000   29.720000  125.400000  1084.000000    0.146000   \n",
       "max     36.040000   49.540000  251.200000  4254.000000    0.222600   \n",
       "\n",
       "            最差致密度        最差凹度       最差凹点数       最差对称性      最差分形维度  \n",
       "count  569.000000  569.000000  569.000000  569.000000  569.000000  \n",
       "mean     0.254265    0.272188    0.114606    0.290076    0.083946  \n",
       "std      0.157336    0.208624    0.065732    0.061867    0.018061  \n",
       "min      0.027290    0.000000    0.000000    0.156500    0.055040  \n",
       "25%      0.147200    0.114500    0.064930    0.250400    0.071460  \n",
       "50%      0.211900    0.226700    0.099930    0.282200    0.080040  \n",
       "75%      0.339100    0.382900    0.161400    0.317900    0.092080  \n",
       "max      1.058000    1.252000    0.291000    0.663800    0.207500  \n",
       "\n",
       "[8 rows x 30 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "46fcc531",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['平均半径', '平均纹理', '平均周长', '平均面积', '平均光滑度', '平均致密度', '平均凹度', '平均凹点数',\n",
       "       '平均对称性', '平均分形维度', '半径的标准误差', '纹理的标准误差', '周长的标准误差', '面积的标准误差',\n",
       "       '光滑度的标准误差', '致密度的标准误差', '凹度的标准误差', '凹点数的标准误差', '对称性的标准误差', '分形维度的标准误差',\n",
       "       '最差半径', '最差纹理', '最差周长', '最差面积', '最差光滑度', '最差致密度', '最差凹度', '最差凹点数',\n",
       "       '最差对称性', '最差分形维度'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看X的特征名称\n",
    "features = X.columns\n",
    "features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "7132fd20",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([[-1.44463663, -0.44189887, -1.36569672, -1.14405401,  0.79556112,\n",
       "          0.72570266,  2.82904435, -0.11870049,  1.10554478,  2.47945356,\n",
       "         -0.26524748, -0.01517239, -0.47102864, -0.47712901,  0.84956947,\n",
       "          3.24485534,  8.44264289,  3.39077466,  2.62001608,  2.06404492,\n",
       "         -1.2353396 , -0.4844966 , -1.25037683, -0.97798548,  0.73310523,\n",
       "          1.18357383,  4.67523915,  0.92632205,  2.10269766,  1.8959969 ],\n",
       "        [ 1.96586584,  1.73087608,  2.08446863,  1.84599187,  1.33849141,\n",
       "          3.44164384,  2.01813392,  2.66078624,  2.14441745,  1.57522   ,\n",
       "          0.80467245, -0.81185091,  0.75283751,  0.87500085, -0.88682402,\n",
       "          1.17903729,  0.18647919,  0.60249588, -0.3167389 ,  0.53191461,\n",
       "          2.15772138,  1.30714169,  2.06865461,  2.12349474,  0.77232393,\n",
       "          3.25957862,  1.93007619,  2.68654284,  1.89590784,  2.51003428],\n",
       "        [-1.40391759, -1.25786522, -1.34883857, -1.11473154, -1.33200171,\n",
       "         -0.30382853, -0.36314302, -0.69507964,  1.94688532,  0.96821136,\n",
       "          0.02629155,  1.96404982, -0.12114519, -0.35312902,  0.58366783,\n",
       "          0.73816476,  0.32352129,  0.59137454,  2.61389529,  0.72127499,\n",
       "         -1.29752153, -1.05027712, -1.24768572, -1.00365096, -1.43873917,\n",
       "         -0.54933232, -0.64435103, -0.96870143,  0.59790402,  0.05951811],\n",
       "        [-0.98626465,  1.4134252 , -0.98659382, -0.87197534,  0.06948235,\n",
       "         -0.59417967, -0.81828699, -0.84344148,  0.32273228,  0.08351372,\n",
       "         -0.54015747,  0.53738358, -0.65879458, -0.49896149,  0.07579896,\n",
       "         -0.82073044, -0.68280378, -0.89491309,  0.12395797, -0.42961933,\n",
       "         -0.83322974,  1.59003194, -0.87721005, -0.7476993 ,  0.80718499,\n",
       "         -0.72991055, -0.7744354 , -0.80855645,  0.79992177, -0.1337065 ],\n",
       "        [-1.12199478, -1.01801344, -1.1288602 , -0.97093867,  1.28781792,\n",
       "         -0.43589332, -0.9816041 , -0.92878236,  3.41740226,  0.9640251 ,\n",
       "          0.40132962,  0.44128689,  0.21954352, -0.11784698,  0.18235634,\n",
       "         -0.78636279, -0.78075773, -0.58542209,  2.60287787,  0.7683456 ,\n",
       "         -1.08817568, -1.34474768, -1.12000767, -0.90081324, -0.16892485,\n",
       "         -0.99523158, -1.20878331, -1.3515838 ,  1.03534403, -0.20525031]]),\n",
       " 68     0\n",
       " 181    1\n",
       " 63     0\n",
       " 248    0\n",
       " 60     0\n",
       " Name: 诊断结果, dtype: int32)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "\n",
    "# Encode the '诊断结果' column\n",
    "le = LabelEncoder()\n",
    "data['诊断结果'] = le.fit_transform(data['诊断结果'])\n",
    "\n",
    "# Define the features and the target\n",
    "X = data.drop(['ID', '诊断结果'], axis=1)\n",
    "y = data['诊断结果']\n",
    "\n",
    "# Split the data into training and testing sets\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
    "\n",
    "from sklearn.preprocessing import StandardScaler #导入数据标准化工具\n",
    "scaler = StandardScaler() # 数据标准化\n",
    "# 先计算X_train 上数据的均值和标准差\n",
    "X_train = scaler.fit_transform(X_train) \n",
    "# 使用之前在 X_train 上计算得到的均值和标准差对 X_test 进行标准化。\n",
    "X_test = scaler.transform(X_test)\n",
    "\n",
    "X_train[:5], y_train[:5]  # Display the first few rows of the training data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "527227c9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAHpCAYAAABTH4/7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABp8ElEQVR4nO3de1xUdf7H8fcMDDAEJISXDREh0tJSW35upIVd1G76k9pyScu0n5vbul6i2FZtt3V3A7d13Swro3JZK2n9VVvbxZJf62plumGGy0ImlVJkJUgMxjAOzPz+IKcmLo44nJnB1/Px4JHnMud85nvmwLf3nPM9Jrfb7RYAAAAAAABgIHOgCwAAAAAAAMCJh1AKAAAAAAAAhiOUAgAAAAAAgOEIpQAAAAAAAGA4QikAAAAAAAAYjlAKAAAAAAAAhiOUAgAAAAAAgOEIpQAAAAAAAGA4QikAAAAAAAAYjlAKQMhyu91yOBxyu92eeZ9//rk++uijDtevra31edsHDx7Uc889p5aWFq/51dXV+uqrr476+nfffVefffaZz/sDAADozLp16/R///d/ftnWO++8o9zcXH3yyScqKyvTtddeq0OHDh31da2traqvr/ea98UXX/jULzri3Xff1b/+9a928997772jvraxsVHbtm1Ta2urz/sDEPwIpQAElUceeUQmk8mnH7PZrKioKNXU1Hhev2nTJp111llqbGxst+3Zs2dr7NixcrlcHe770KFDOu+88/Tvf/9b77//vq666iq1tLTonnvu0cKFCyVJd999t8aNG3fU9zFt2jT9/e9/714jAAAAfMuTTz7pFUq9//77qqqq0ieffOL1s2/fPlVUVEhq+4LtN7/5Tbt+z9///nc99thjio6OVt++fbVz505NnTrV60u+jrzyyitKSUnRtm3bPPPOPPNMrVmzpsvXbdiwQf/93/8tp9Op1atXa8WKFZKkc889V6+//rpcLpe+//3va9WqVV1up7KyUueddx6hFNDLEEoBCCqRkZE6+eST1djY6PXz4IMP6uc//7nXPJvNptraWn3ve9/zvP6TTz7Rueeeq9jYWK/t7t+/Xy+//LJuuOEGmc0d/+qLiYnRtddeqx/96EcKCwuT1HY11gMPPKCJEydKavt28b//+7+P+j6ioqIUEREhSXrjjTdkMpkUFRXV7iciIkLnnXdet9oKAACcGKKiohQZGemZnjp1qk4//XQlJyd7/QwePFjDhw+XJO3bt0/33HOPbrrpJq/A6ZlnntGNN96ohIQEnXrqqXruuef0wx/+UJLkcDg6vfLpgQce0Nlnn63MzEzPPKvVKovF4rWe3W73mr7wwgv1+eefa/ny5YqIiFBERIQ2bNigTz/9VOeee64qKytlt9s1efLko7aBJE//avbs2QoPD++wfxUWFqaHH364y+0BCA6EUgCCypHAKCYmxuvnhRde0FdffeU1LzY2VqeccoonQJKkDz/8UGeeeWa77RYUFCgjI0Nz5syR2+3WypUr1dDQ4LXOrl271L9/f9144416/fXXJUnPPvusMjMzVVdXp48//lg7d+7UFVdc4XlNS0uLHA5Hp+9Daus8nXLKKWpubm73s2bNGq9OJgAAwHcduUr8iJKSEjU2Nsrtdnt+Wltb1dDQ4LmC/JxzztH69ev1xBNP6JZbbpEkvfnmmyovL9f999/v2ebZZ5+t2bNne65AT0lJabf/srIybdiwQUuWLOmyzvfee09Dhw7VG2+84Zn3yiuv6Ec/+pEGDhyojz76SB9//LEqKio0ZcoUbdq0Sa+99pqGDx/utd/m5uZ2V0R990vFiIgILVy4sMP+1UUXXUT/CggR4YEuAAA688tf/lIFBQWS2sYxMJvNWr16tdc65eXlOuOMM7R8+XIVFhbqs88+k9Vq1ebNmyVJTzzxhE466ST95S9/0VtvvSWTyaT6+nqtXr1a//d//6e///3vnk7eO++8ozVr1qi1tVVbt26VJD3++ONyuVx69NFHdfDgQbW2tmr06NFeNfzP//yPHn30UX322WcqLi5WVFSUamtrtXnzZh06dKjdVVsAAABHU1NTo+uvv14RERHatWuXdu3apa1btyojI8PTP/o2s9msuLg4xcXFeeZdccUV+u1vf6sXXnhBra2tuu+++yRJL7/8si644AJJ0uDBg3X33Xfruuuu0+HDhzu8PW7BggWSpMsvv7zTehsbG3XttdcqKipKp59+umf+U089pS+++ELV1dX68MMPdeqpp2rjxo2evl1VVZX+85//eIVukvT666/r/PPP12uvvab//Oc/qqurkyQ9/PDDampq8vpSEkDoIpQCELQiIiJ0/vnn65///Ge7ZeXl5Tr77LM934JdeOGF6tevn+bMmaM77rhDSUlJmjVrliwWi6ZNm6Y77rhDw4YNkyRZLBatXr1al156qe666y795je/kSTNnDlT06ZN03XXXaehQ4dq9+7duvrqqzV06FCNGzdO2dnZmjp1qh577DFJ0lVXXaUxY8bo9ttvl9R2uXpZWZkiIyPV1NSk6upqhYeH66yzzlJdXZ3nsvPvOvfcc/3ddAAAIMTFxsZqzpw5crlcmj59ui6++GJNnTpVLpdLe/bsaXfb3BFHwp7U1FRJ0h133KGbbrpJFRUVevrppyW13XYXExPjeU1kZKRXmPVtjzzyiOfLvu8GR0c0NDToyiuv1KFDh7Rlyxb179/fs+yvf/2rKioqdNFFF2nIkCE655xzNGDAAP32t7+Vw+HQ9773PT3//PO6+OKL9fnnnys9PV0VFRU67bTTJEmffvqpysrKPIOxl5WVyW63KzY2Vvfee2+nY1Hl5OR02rYAgge37wEIWp11fDpa57/+6780btw4tbS06NZbb9WYMWMUGRmp119/XaWlpVq2bJliYmJksVg0aNAgzZo1S2eccYbuvvtuvfjii5Kk3bt368ILL1Rtba0eeeQRSVJiYqKmTJmil19+WRs2bNDhw4c9tw9+8cUXSk5O9lwJlZqaqqKiIj388MMaNGiQbrjhBj3yyCMaN26c1+17H3/8sc466yzt379fzc3Nno4eAADAEXFxccrJyVFiYqIk6fTTT9eYMWP0n//8R0OGDNGQIUN0xhln6PTTT1daWprOOOMMnXHGGRoyZIiuu+46z3bMZrMSEhI0Z84cDR06VJJ04MABz+DoLpdL9fX1qq6u1gcffKCDBw96Xrt582b97Gc/09VXX91pnQcOHNBFF12kmpoabdq0ScnJyZ5lbrdbTzzxhM4//3wtWrRIl19+ucxms/bv36/JkydrzZo1amlpkdvtVkxMjGw2m0wmk0477TTP2FE33HCDHnvsMf3yl7+UJD344IP685//LLPZ7HX73oMPPqg5c+Z4pmfPnu2/gwGgxxBKAQg63x4zYPPmzQoPD2/3M2rUqHave/311zVq1ChFR0frnXfe0fDhw3X99ddr5cqVevHFF/Xee+/Jbrfr4MGD+vDDD/Xuu+/qf//3f3XhhRdKkgoLCzVq1CiVlJTowIEDys7O1hVXXKEHH3xQ//u//6vo6Gi9++67nv19+umnnm8hO1JfX6958+bp1VdfldT2dL9Dhw6publZO3bsUHNzsw4dOiSbzaYvv/zSH00HAAB6mfXr10uS1q1bp7Fjx2revHlqbW3V4cOH1dzcrLvuuktZWVmeMKa1tVVvvvmm1zYOHz6sIUOG6O6775YkzZo1S2eddZbOOussffnll1qyZImGDx+u4cOH6/HHH/e87pe//KWuvPJK3XrrrZ3Wt3TpUplMJm3dulWDBw/2WrZ//3498sgjWrNmjWbNmqXo6GhlZGSoqKhI11xzje677z716dPH07/69NNPlZSU5AmkOrJ9+3b993//t1pbW+V0Oj39q88//1wfffSRZ7q+vr7doOsAgg+hFICgcmQwc6nt27UjVz999+dI5+Xb4x689tprOv/88yVJW7Zs0bnnnquYmBhdc8016tevnw4dOqSqqiq99957np/zzz/fs7+lS5fqnnvuUXNzs6ZPn65JkyYpPDxcU6dOVVRUlO6//37V1NSourpaBw8eVG1treeWwG/bvXu3Dh48qCVLluikk07SkCFDVFdXp9jYWMXGxmrQoEGSpFNPPVWxsbE6+eSTdc011/RkswIAgBB04MAB/fWvf1ViYqKuvPJK2Ww2PfTQQ2ppadHHH3/cbv333ntPkrzGW3rjjTe0detWFRUVacKECZKkF198UV9++aW+/PJLJSQk6MEHH1RjY6Oam5s940cdWW/t2rUd1vbQQw/piy++0BVXXKE33njD62nIRxy5NW/ixIl6+umntXr1at1www2yWCyaOHGizjzzTN11112eq8bff//9DvtWLS0tevvttyVJM2bM0IwZM2Sz2XTfffd5+leLFy/WCy+84JlOSEjQM88842tTAwgQQikAQeWLL75QQkKCJHlubTvydJhv/5x99tmedY4oKSlRXFyc3G63XnrpJU2cOFGSlJeXpzPPPLPDnz/+8Y+e119//fWekOjIZd8Wi0UWi0UDBgzQ9ddfr7Fjx+r555/XW2+9pdTUVK8O2L59+zRq1CjdcMMNstvtWrlypZYtWya3261Ro0Z5no5TX18vSZ6n5rS2turll1/u8bYFAACh5c4779SQIUM0btw4nXzyyfrFL36h2NhYvfjiixo8eLDKy8s96/773//W8OHDVVxc7LWNFStWtHtQjN1u91xRJEkOh0M2m011dXX66quvPOvFxcV5jT0ltT2t+JJLLtHPf/5zhYWF6YorrpDVau2w/oaGBsXHx+ukk07S7NmzVV9fr/79+8tisWjo0KF65JFHdNVVV+nNN99UXV2dtm7dqrFjx3pt49FHH9WgQYP01FNPSWobV/Saa65RfX297r33Xk//6k9/+pN++MMfeqadTqfXbYwAghOhFICg8t5773muJLrrrrvU2Njo+Rk9erR+/vOfe80788wzJbVdVXXHHXfo/vvvV2Zmpmw2my677DJJbQOm33jjjV6PTXa73crIyPC6PHzt2rWy2Ww699xz9fvf/152u1179uxReHi4fvSjH0lqC64efPBBrVu3TuPHj/eqPSUlRU888YT+9a9/KSkpyTMAaU1NjU499VTddNNNSkxM9AzcOXjwYCUmJmrMmDFdXqYOAABOPE888YQee+wxrVy50jNv4cKFmjt3rp588kmNGzdOZ511lmfZ2WefrR/+8IeaN2+evvjiC0ltX5i98MIL+tnPfua17WuvvVYDBw7UwIEDdfDgQd16661KSkrSwIED9eijj3Za086dO3XOOefo0KFD2rFjh0455ZQu38PJJ5+s2tpalZaWKjo6Wh988IHsdruWLl2qzMxMDR48WCkpKfrBD36gP/zhD9qwYUO7/lV2drbeeecdzxeJ3+5fnXzyyUpMTFRiYqLuvPNOvfDCC57pVatW8YQ+IAQQSgEIKv/61788V0FZLBb95Cc/0TvvvKOYmBiZzWZZLBaZTCb9+Mc/1v79+z3jT5lMJs2bN08VFRV67733ZDab9dZbb0nyHqPqu77dWYmLi9PmzZu1fft2HTp0SO+8844KCgo0ZcoUnXHGGZLaQqmDBw9q3bp1uuWWW9pt79udwyO2b9+uc845R62trVq4cKHq6urkdrtVW1uroqIixjsAAADtjBs3TqtXr/YMTXDE7t279fzzz+vnP/95u9fcf//9stvtys3NlST97ne/09ChQ3XRRRd5rdfZ7Xt2u93r9r3vOuecc/R///d/euuttzRkyJAO1/n2Vewmk0mnnHKKCgoK1L9/f/3zn/9UZWWlHnjgAS1ZssSzXm5urn7/+98rPT1dY8aM8dpeYmKiBgwY0G4f//73vzV27FjV1dXp3Xff1aFDh+RwOFRbW6sLL7xQbre70/cBIHgQSgEIGhUVFaqqqtK4ceMkSffcc4+eeeYZhYeHe61nMpnU1NSk888/Xzt37vRa9sorr8hisSgvL0+XXXaZ1q5d69NT/I645JJL9Oqrr8rhcCg7O1tr1qxRXV2d/vnPf0pqG/MqPj5eEREROnz4sE/b3LZtmy6++OJO6ziW+gAAwIkhOTnZ8wS5bwcsc+fO1fDhwz1XhH97Wf/+/XXzzTervr5eb731ltasWaN58+b5vE+Xy6Xm5mY5nU6v+Uf24Xa7ddFFF3X5hd9zzz2n//qv/1J1dbVn3sqVK3XXXXeppKRE3//+93XgwAG98cYb2r9/vyQpMjJSkhQdHa2mpqaj1llaWqrvfe97Ov300ztdh/4VEBoIpQAEjfvuu0/9+vXThRdeqLvvvlt33XWXnnnmGc83Zke+eYuOjtazzz6rSy+9VJdccol2794tqW2Mgfnz5+v3v/+9fvGLX+jPf/6zxo4dK7fbrb/85S/txqXasWNHuxqsVqvOO+88hYWFyel0ep508+KLL2rr1q0aPXq0zjrrLN14442aMGGCNm7c2OF7aW1tVUxMjEpLS2W32zVu3LhOv7FzuVz+aD4AANBLHT582PNl2MMPP6y//OUv2r17t5YuXaq//vWvio+P96y7fPlyvfTSS9q5c6f69eunG264wbPsSF/koosu8vSH6urqNGvWLJlMJoWFhclqterJJ5/02v+RB8t8t88SERGhrVu36qOPPtLevXv14Ycfat26ddq9e7f69evnWS8pKUnf//739fHHH+v888/XCy+8oPfee0979uzRsmXLdO2112rlypXav3+/Lr30Uh04cKBdG7S2tuqkk06SJD311FO67rrrurwaiv4VEBrCj74KAPS8mpoa/fnPf9bixYsltQVML7zwgiZMmKCXX35ZU6dO1VdffaW5c+dKarvtrqioSH/4wx80ePBgbdu2TVOmTNF5552nm266SZI0bdo0SW2dkmuvvVYrVqzw2ueVV17p9fS+119/XY888oief/55XX755dq1a5eSk5N14MAB5ebm6sILL9Ttt9+u3/3ud3K73WpqatJll12m/Px8/eIXv5DUdkl9SUmJRo4cqQkTJmjq1Km67bbbFBYW5nls869//WvPPt1ut9LS0nqsXQEAQOj7dih1ZGzKhoYGPfHEE/r+97+vX/3qV551jwxN8NOf/lTTpk1TdHS0Z9mRfs+3v/T7ttbWVjmdTs9DZ45wOByS2r4gPBIMSW19rYKCAj3++OOeeREREfrd736nqKgo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XHLJJe57773XLcn90Ucfud1ut/tvf/ubOz4+3v3VV1+53W63+91333WPHTs2gFXiaD744AO32+32Oo47duxwx8TEuE877TR3VFSU+9JLL3Xv27cvgFWiMy+88IL7oYce8kz/4x//cEdERHAuhriHHnrIPWzYMM5FhJQjn1t0T0d/j+E7/u75F5/HnsPvSv84fPiw+4YbbnDfeOONgS4lpM2cOdP9k5/8xH3jjTe6//znPxu2X66Ugl8UFhZqwYIFXvPKysqUmZmp6OhoSdKIESNUUVERiPLgo7S0tHbzKisrNXz4cBUXF6uiokIWi0Vz5swJQHU4mkmTJuknP/mJZ3r37t1KT0/nXAxhhw8f1vLly/XTn/6UcxFBITs723Ol3rd/Vq1a5Vnn259bdK6rtuzo7zF8x989/+Lz2DP4XekfZWVl6t+/vzZu3Kh777030OWErE2bNum1117T73//e8P3HW74HtErdfTHymazKTU11TNtMpkUFham+vp6xcfHG1kejsP06dM1ffp0z/SRzrLNZlNcXFwAK0NXjnR0br31Vn344YeciyHqzjvvVExMjG6++WZZLBbORQTcww8/LLvd3m5+QkKC59/f/tyic760JbqHPihCAb8r/WPEiBF67bXXdPvtt2vWrFn629/+FuiSQk5zc7PmzJmjhx56KCB9SkIp9Jjw8HBFRkZ6zYuKilJTUxMdghDWp08fuVwu7d+/n/8RDmLf7ujceeednIshqKSkRKtXr9a2bdtksVjaLedcRCD079+/y+VH+9ziG0drS3QffVAEO35X+o/JZNI555yjoqIipaSkED53w29/+1uNHj1aV155ZUD2z+176DEJCQk6cOCA17zGxkZFREQEqCJ0R25urtavX++Zfvvtt2U2m5WcnBzAqtCVIx2ddevWyWKxcC6GoA8//FDTp0/XQw89pGHDhkniXETw6+hzCwQCf/cQzPhd6R//+Mc/lJeX55kOD2+73sZsJuI4VuvWrdPzzz/vuY183bp1+ulPf2rYraVcKYUeM3r0aD366KOe6b1798rhcHBZeogZNWqUlixZogEDBqilpUXz5s3TzJkzPeM0ILh01NHhXAwtdrtdkyZNUnZ2tqZMmaJDhw5JanuqDOciglVnn9uTTjpJJpMpwNXhRMPfPQQrflf6zxlnnKHs7Gydfvrpuvzyy3XnnXdq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\n",
      "text/plain": [
       "<Figure size 1200x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Select a feature for comparison\n",
    "feature = '平均半径'\n",
    "\n",
    "# Extract the selected feature from the original data and the standardized data\n",
    "original_feature = X[feature]\n",
    "standardized_feature = pd.DataFrame(X_train, columns=X.columns)[feature]\n",
    "\n",
    "# Plot the histograms\n",
    "fig, axes = plt.subplots(1, 2, figsize=(12, 5))\n",
    "\n",
    "original_feature.hist(ax=axes[0], color='c', edgecolor='black')\n",
    "axes[0].set_title('原始数据')\n",
    "axes[0].set_xlabel(feature)\n",
    "axes[0].set_ylabel('频数')\n",
    "\n",
    "standardized_feature.hist(ax=axes[1], color='c', edgecolor='black')\n",
    "axes[1].set_title('标准化数据')\n",
    "axes[1].set_xlabel(feature)\n",
    "axes[1].set_ylabel('频数')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "0295dafb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9736842105263158 \n",
      "\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.97      0.99      0.98        72\n",
      "           1       0.98      0.95      0.96        42\n",
      "\n",
      "    accuracy                           0.97       114\n",
      "   macro avg       0.97      0.97      0.97       114\n",
      "weighted avg       0.97      0.97      0.97       114\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 导入并初始化模型\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "logreg = LogisticRegression(random_state=42)\n",
    "\n",
    "# 训练模型\n",
    "logreg.fit(X_train, y_train)\n",
    "\n",
    "# 进行预测\n",
    "y_pred = logreg.predict(X_test)\n",
    "\n",
    "# 评估预测结果\n",
    "from sklearn.metrics import accuracy_score, classification_report\n",
    "accuracy_log = accuracy_score(y_test, y_pred)\n",
    "classification_rep_log = classification_report(y_test, y_pred)\n",
    "\n",
    "print(accuracy_log,\"\\n\"), \n",
    "print(classification_rep_log)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "eea9020c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9298245614035088 \n",
      "\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.94      0.94      0.94        72\n",
      "           1       0.90      0.90      0.90        42\n",
      "\n",
      "    accuracy                           0.93       114\n",
      "   macro avg       0.92      0.92      0.92       114\n",
      "weighted avg       0.93      0.93      0.93       114\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 导入并初始化模型\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "dt = DecisionTreeClassifier(random_state=42)\n",
    "\n",
    "# 训练模型\n",
    "dt.fit(X_train, y_train)\n",
    "\n",
    "# 进行预测\n",
    "y_pred_dt = dt.predict(X_test)\n",
    "\n",
    "# 评估预测结果\n",
    "accuracy_dt = accuracy_score(y_test, y_pred_dt)\n",
    "classification_rep_dt = classification_report(y_test, y_pred_dt)\n",
    "\n",
    "print(accuracy_dt,\"\\n\"), \n",
    "print(classification_rep_dt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d93a686c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9649122807017544 \n",
      "\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.96      0.99      0.97        72\n",
      "           1       0.97      0.93      0.95        42\n",
      "\n",
      "    accuracy                           0.96       114\n",
      "   macro avg       0.97      0.96      0.96       114\n",
      "weighted avg       0.97      0.96      0.96       114\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 导入并初始化模型\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "rf = RandomForestClassifier(random_state=42)\n",
    "\n",
    "# 训练模型\n",
    "rf.fit(X_train, y_train)\n",
    "\n",
    "# 进行预测\n",
    "y_pred_rf = rf.predict(X_test)\n",
    "\n",
    "# 评估预测结果\n",
    "accuracy_rf = accuracy_score(y_test, y_pred_rf)\n",
    "classification_rep_rf = classification_report(y_test, y_pred_rf)\n",
    "\n",
    "print(accuracy_rf,\"\\n\"), \n",
    "print(classification_rep_rf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "56e0ba31",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/qann35a77//voYMGRJ00nfWrFl6/fXXNXfuXN1xxx16/PHH9eabb1b7GNX10ksv6aqrrtL555+vcePGBfbv3LlT55xzjhISErR48WKNHz9et99+e9ANQC+55BKtXr1azz33nGbPnq2FCxcGvQcAAJWNS1esWKErrrhCF1xwgd5++21ddtllGjNmjL777rvAz+3evVtDhgzRkCFD9Prrr0tSUMaMGTNGq1at0rPPPqspU6ZowoQJQcetTp/g9ddfV25urr766itdccUVeuKJJ3TCCSfYduPm6o5LpdCNr6+55hrl5eVp9uzZkhToVbCECVANFmCzd99915Jkff7558d8TVJSkjV69OjA44qKCqtXr17WyJEjLcuyrO3bt1uSrMLCQsuyLOutt96yIiMjK32vP/zhD9Yf/vCHo/ZPmjTJio2Ntfbt22dZlmXt3r3bWrhwobVr165q/Xx1XtOuXTvryiuvDDzev3+/9dvf/tZavHjxcd/vsMPf1ZFby5YtrZdffjnwmoEDB1ojRowIPK6oqLBatGhh3XfffZZlVe+7Onyc/v37W3v27DmqjqqO8f3331uSrBdffDHwmg8//NAqKCgIeo8hQ4YEHm/YsMFatGjRMT/zL02aNMlq1qyZtWPHjsC+v/zlL1ajRo2s7du3B2oYPnx44Plt27ZZkqwPP/zwqPcDADivst8J9u/fb0myrrnmGsuyqs6gu+++24qLiwvK71mzZll33XXXUcer6+8ElmVZkqx333230s/x9ttvB/Z9+umnliTrtddesyzLsjp16mS1bdvWKisrC7ymR48e1oMPPniMb+fYfvmd/LK+hIQEa/369Uc9N2nSJKtly5bW/v37A/suvvhiKyMjI+hzHPn/j0cffdRq1KhR4LsBADQ81RmXrlq1ysrOzrYOHjxoWZZl/fjjj1ajRo2sf/7zn5ZlWda8efMsSdbDDz8c+Jn58+dbERERlmVZ1rp16yxJ1vz58wPPP/LII5Yk6/vvv7cs6/h9gsPjwRUrVliWZVkdO3a0/u///s+yLMsaM2ZMlWP6wzp16nTUZ7322msDz1c1Lj3y+wrl+PrI4wCoPm5GiXq3fft2FRUV6b777gvsCwsL06BBg/TKK69I+vmGTK1atdIbb7yhTp06adGiRerRo0eNjvP73/9ejz/+uHr27Kmzzz5b6enpuuSSSxQbG2vL59i2bZu2bNmijIyMwL5GjRpp/vz5NX6v3Nxc9erVSyNGjNCZZ56pSy65JPDcF198oZ9++umo5T7Wr18vqWbf1SOPPKKYmJij9ld1jKSkJA0bNkx//OMf9c9//lNpaWm66KKL1LNnz8Brx40bpyuuuELp6ekaMGCABg4cqGHDhlX7O8jLy9Mpp5wSuBGXJJ1zzjm64447tHr1anXp0kWSdOONNwaeP3wZ3YEDB6p9HACAsw7P5D48s7uqDPr888918sknB+X3n//85xods66/E+Tl5Sk8PDxwCbEkpaWlqXnz5srLy9OIESMk/bx0StOmTQOvadmyZUgy6o477gjk4pG++OILbd++XZGRkUH727ZtG3hekk455ZSjfnbDhg068cQTba8VAOAdxxuXnnrqqdq7d69uv/12rVixQmvWrNHBgwdVXl4eeE1YWJiuu+66wOOWLVsGlho7vKxl//79A88fOZauTp9Aktq1ayfp5+U8jvxzTYwePVqZmZmBxy1atAj8uapx6eDBgwP7Qzm+BlA7NLpR76z/v1blL//RDwsLCzxnWZb69OmjyZMn64477lC7du306quv1ug43bp10/r167VkyRJ99NFHmjRpku677z59/vnnQeuM2f051q5dq6ioKHXr1q3a79W1a1edcsopuvPOO/XnP/9ZU6ZMCRrAXn/99br66quDfiYuLi5QR3W/qyN/qfil4x1DkhYsWKD3339fH3zwgRYvXqx77rlHubm5uvzyyyVJo0aNUv/+/fXOO+9oxYoVGj16tM444wwtXry4Wr94WJZV6d+Jw88dlpKSUuV7AQDc63Cz9cjBXFU598t8+PHHH7V+/XoNGDAgkBXHU9ffCaxjrLN9eH3Ow+oro46X56eddpqefPLJoH0REf/7lT88PFx5eXlHfacdO3a0t0gAgOccb1z6xBNP6JZbbtGVV16pm2++WQMGDDhqqcx27dqpcePGlb734TWuw8PDA/uO/HN1+gR2admypfr06VPpc9Udl0qhHV8DqB3W6Ea9a9WqlTp16hR0M4ZDhw7p3XffVVpamiTptdde008//aTt27fr66+/VlFRkU477bQaHeepp57S8uXLNWrUKD366KP69NNPtXnzZr3xxhtBr4uOjtbevXtr/Dlat26tdu3a6f333w/ssyxLI0aMUHZ2do3fT5KuuuoqtWnTRllZWYF9vXr10tatW9WnT5/A9tprrwXW/LTju6rqGGvXrtU999yjgQMHauLEiVq+fLnOPffcoDW677rrLu3Zs0fXXHONnnnmGT311FN6++23VVRUVK0a0tLStHr16qD1UpcuXaqIiIigX0KO/GUIAOA9c+bMUXR0tC644AJJVWfQKaecojVr1qi0tDTwHk888YRGjBhRrSa3VP3fCY4lLS1NFRUVWr58eWDfqlWrVFJSEvjdRXI+o3r16qWNGzfqpJNOCnyXX331VWCNz169eqmiokLh4eGB58PCwjRjxoygG2sCABq2ysalc+bM0ahRo/Tkk0/q8ssvV7NmzY6618XxcvBww/zIm1OuWLEi8Ofq9AnqQ3XHpcdjx/ha+rlXIalW/QqgoWJGN0Lmk08+OeomgSeeeKI6duyo+++/X1deeaU6duyoc845R08//bT+85//6Omnn5YkNWnSRP/5z3/04osv6qSTTtK+ffvUvn17xcfHV/v427dv1+TJk+X3+9WhQwctWLBA0tGzrfr376877rgjMPN448aNR515PZZ77rlHN998szp16qSBAwfqpZde0pYtW2p9N+SoqCjdcccduv322zVp0iR17NhR9913n84991zdc889Ov/887VixQrdf//9eumllyTZ811VdYxmzZpp5syZioiI0Pnnn68tW7bos88+0/DhwwPv8fnnn+vjjz/WhAkT1LhxYz377LNq0qSJWrduXa0abrjhBmVnZ2vEiBGaOHGi1q9fr0mTJunmm29Wy5YttWfPnhp8kwAANyksLNT27dv1j3/8Q//85z/16KOPBpYuqSqDrr/+es2ePVsXX3yx7rzzTm3ZskWPPfZYjW6gWN3fCY5l0KBBOuecczR27FhNnz5dkZGRuuOOO3TaaacFZaHTbrrpJj322GMaNWqUbrzxRm3btk033nijLrvsMkk/f46MjAyNHj1aDzzwgGJiYnT33Xfr4MGDatOmjcPVAwDcorJxaYsWLbRy5UotXbpU//3vf/XAAw+orKwssDRJVXr16qWBAwfqlltukWVZKi8v17333hv0mqr6BPWhqnFpddgxvpakHj16qFmzZvrLX/6iQYMG6YsvvtBvfvObao+xgQap/pcFh+kqu5HF4W369OmB1+Xm5lpdu3a1GjVqZPXr189avnx54LmysjKrU6dOVqtWrayoqKjAz//ud7876njHuvHUgQMHrAkTJlhJSUlWVFSUlZKSYj3++ONHva6iosK68cYbrfj4eCsqKsq66qqrqn0My7KsJ5980urcubMVExNj9e/f31q2bFk1vqWfHf6uPv7448C+vXv3Wm3btrWuv/76wL5//vOfVs+ePa2oqCire/fu1rx58wLPVee7qs5NLI53DMv6+SaXp512mtW0aVMrISHBGj16tLVz587A81u2bLFGjx5ttWrVymrcuLGVlpZmLV269JifuTJff/21df7551vR0dFW27Ztrfvvv9+qqKiwLOt/N+w4fKOSw1TJTcMAAO5w5O8EMTEx1umnn269+uqrR72uqgz64osvrHPOOceKjo62OnXqZE2ZMiXohouH1fV3Ass6dq6UlZVZ11xzjRUXF2c1a9bMGjNmjPXTTz8Fnu/UqdNRdQ8cONCaNGlSpcc5nqpuRnm83Pvss8+sQYMGWdHR0Va7du2sO+64w/L7/YHnt2/fbl1++eVWbGysFRcXZ1166aXWpk2balwjAMAc1RmXrlu3zjrjjDOsmJgYq1u3btb06dOtfv36BXJ33rx5VqdOnSp938N+/PFH65JLLrGaN29udezY0Zo1a9ZRY7xj9Ql+OR48MnePN17/pU6dOll//vOfj/ua441LK/tclanr+PqwhQsXWl27drUiIiKszp07W1u2bKnW5wQaKp9l2bzYEWCDK664QsXFxbr99tvVpEkT7d27V6+88ooee+wx7dy5M2htq4aO7woAAAAAAAANHUuXwJVuuOEG3XPPPbrkkktUWlqqmJgYpaam6tlnn6Vx+wt8VwAAAAAAAGjomNENAAAAAAAAAPC06t2qHgAAAAAAAAAAl6LRDdd46623lJqaqujoaKWlpenTTz8NyXG+/PJLnX766YqOjlarVq20aNEi249x1llnafLkyba/b1Xee+89+Xw+paamBva9/PLL8vl8Ouuss+q9Hkny+Xx67733HDk2AMB+5HXdkdcAgPpAZtcdmQ14C41uuMKHH36oESNG6LTTTtPixYt10kkn6fzzz1dxcbHtx/rTn/6kxMRE/fvf/9bjjz8eknWsn3zySV1zzTW2v291/ec//9H+/fslSWvXrq3Ve6xevVqzZs2qcy15eXnq27dvnd8HAOA88tpe5DUAIFTIbHuR2YA30OiGK0yYMEE9e/bUnDlzdNZZZ+mpp56Sz+fT7NmzbT/WZ599pquuukpnnHGGLr30Uv3qV7+y/RjdunVTu3btbH/f6jpw4IDWrVsnSVqzZk2t3sOuEO7Xr5+aNWtW5/cBADiPvLYXeQ0ACBUy215kNuANNLrhuB07dmjFihW65JJL5PP5JEmRkZHq3bu3CgoKbD/egQMHFBkZafv7usmvfvWrQPiuXbtW/fv3d7giAIDXkdf2I68BAKFAZtuPzAa8gUY3HFdQUCDLstStW7eg/X/961916623Bh4vWbJEffr0UVRUlHr27KlXX3018FxOTo6SkpL01VdfKSMjQzExMUpNTVV+fr6k/62rdTjkBw0aJJ/Pp6SkpMB7JCUlKScnJ6iGX64D9sorryg1NVUxMTHq1KmTpk+fXulnOt76YTNnzlSnTp0UHR2tc845J+gXjbFjx2rs2LFauHChTjrpJDVp0kRDhw7Vjh07jvn9VaZ3795au3atSktLVVRUpN69ewc9v2TJEvXt21cxMTFKSkoKOqs8duxY+Xw+XXnlldqwYUPge/vl5zm8Ltgbb7yh/v3767zzzqu0lsrWD/vvf/+r+Ph4TZkyJbDvkksuUa9evXTgwIEafVYAQP0gr8lribwGAC8gs8lsicxGw0SjG47btm2bJCkhISFo/6mnnqp+/fpJ+jlEL7zwQvXr109vvfWWBg8erEsuuUQLFy4MvH737t0aMmSIhgwZotdff12SNG7cOElS3759lZeXp7y8PEnS7NmzlZeXF/TzVfnmm2906aWX6owzztCSJUt0++2366677tLixYur/R4PPPCAJkyYoBtuuEELFixQWFiYMjIytHHjxsBr8vPzdd111+mee+7RvHnz9NFHH2natGnVPob0cwivWbNGa9euVUJCghITEwPPff/99xoxYoR69Oiht99+W3fddZduu+02ffDBB5KkyZMnKy8vT5MmTVLbtm0D31tl66G99NJLuuqqq3T++ecHvuvqaNOmjR566CFNnz5dW7Zs0fvvv6/XXntN2dnZatSoUY0+KwCgfpDX5DV5DQDeQGaT2WQ2GiwLcFhubq4lyVq6dOkxXzNw4EDr9NNPD9p3wQUXWH369LEsy7LmzZtnSbIefvjhwPPz58+3IiIijnovSda777571P5OnTpZ8+bNO+q4kyZNsizLst59911LkrVy5crA8++884717bffVlrv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\n",
      "text/plain": [
       "<Figure size 1500x500 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "import seaborn as sns\n",
    "\n",
    "# 计算混淆矩阵\n",
    "cm_logreg = confusion_matrix(y_test, y_pred)\n",
    "cm_dt = confusion_matrix(y_test, y_pred_dt)\n",
    "cm_rf = confusion_matrix(y_test, y_pred_rf)\n",
    "\n",
    "# 显示混淆矩阵\n",
    "fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
    "\n",
    "sns.heatmap(cm_logreg, annot=True, fmt='d', cmap='Blues', ax=axes[0])\n",
    "axes[0].set_title('Logistic Regression\\nConfusion Matrix')\n",
    "axes[0].set_xlabel('Predicted')\n",
    "axes[0].set_ylabel('True')\n",
    "\n",
    "sns.heatmap(cm_dt, annot=True, fmt='d', cmap='Blues', ax=axes[1])\n",
    "axes[1].set_title('Decision Tree\\nConfusion Matrix')\n",
    "axes[1].set_xlabel('Predicted')\n",
    "axes[1].set_ylabel('True')\n",
    "\n",
    "sns.heatmap(cm_rf, annot=True, fmt='d', cmap='Blues', ax=axes[2])\n",
    "axes[2].set_title('Random Forest\\nConfusion Matrix')\n",
    "axes[2].set_xlabel('Predicted')\n",
    "axes[2].set_ylabel('True')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ce7eef69",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABNAklEQVR4nO3deVhV5d7/8c8WEISArSIqAiJOlROmNjiXleOjZnqcFZ/SNK0csmwUy5OWpVYnG7TEcurkcUqtxDGHU04Hh+OUigpoTiHgAA7cvz/8uZ/IVDRuN8L7dV3rutz73ute3/Wlq8WHNWyHMcYIAAAAAADkukLuLgAAAAAAgPyK0A0AAAAAgCWEbgAAAAAALCF0AwAAAABgCaEbAAAAAABLCN0AAAAAAFhC6AYAAAAAwBJCNwAAAAAAlhC6AQAAAACwhNANALjtxcbGyuFwqHXr1q733n33XTkcDkVHR/+leSMiIm54vRUrVsjhcNzwevv375fD4XAt/v7+ql+/vtauXXvDc+XEf//7X9WrV08+Pj4KDg7Wd999Z2U7AAAUZIRuAEC+sXnzZte/t2zZ4sZK/pq///3vWr9+vb755hsFBwerSZMmSkhIyPXtPPHEEypTpoyWLFmif/zjH3I6nbm+DQAACjpPdxcAAEBuOXjwoE6ePCmn05ktgN9uIiMjVbt2bUnSQw89pNDQUH3++ecaOXJkrm5n06ZNeuONN1S/fv1cnRcAAPwfznQDAPKFsmXLqnTp0tqyZYvOnz+vnTt36r777nN3WX9Z4cKFFRkZaeVM9/nz51W4cOFcnxcAAPwfQjcAIN+oVq2atmzZoh07dsjhcKhixYrZxn/44QdFRUXJ29tbVapU0Zw5c7KNr1u3TrVr15aPj4/q1aunAwcOZBs/c+aMnn32WQUHB6to0aLq2LGjjh07Zn2/fv31V5UuXdr1+p///KeqVq2qIkWKqGbNmlq6dGm2z0dHRys6OlqHDh1S165dFRQUpL1790r6v/vNL99z/uCDD8rhcFxx7/rUqVNVqVIleXt7695779WqVatyvI3GjRurX79+qlu3rgICAvT111+rbdu28vPz06uvvuqaY9q0abr77rvl6+urO++8UzNmzHCNXb6ffteuXWrYsKF8fX1VvXp1bdiwwfWZzMxMDR48WCVKlJDT6VSrVq1cNeS0VwAA2EboBgDkG9WqVdPmzZu1ZcsW3X333fLw8HCNrVixQi1btlTt2rW1aNEiPfzww3r88cf17bffSpLS09PVqlUr+fv7a/78+Xr00Uf197//Pdv8ffv21dy5czVhwgRNnz5d27ZtU7t27aztz4kTJzRy5EgdPHhQHTp0kCQtW7ZMnTp1Uvv27fXDDz/o/vvvV/PmzbVz585s6/7222+qW7euHA6HYmJiFBQUJEmqVauW1q9fr/Xr10uSPvnkE61fv97VB0n66quv1KNHDz3++ONatGiRKlSooIcfflgbN27M0TakS6F94MCBuu+++9SpUyfVrl1bAwYM0Lhx4yRJa9asUffu3dWiRQstXrxYXbt2VY8ePbRv3z7XHKdOnVKzZs3UrFkzzZs3T9Kln8FlPXr00JQpU/TOO+9o1qxZSk1NVbNmzXT+/Pkb6hUAAFYZAABuc5MnTzZly5Y1sbGx5t577zXPP/+86dmzp2sxxphGjRqZevXqZVuvRYsWJioqyhhjzMcff2w8PDzMoUOHXOOPPfaYKVu2rDHGmH379hmHw2HmzJnjGp8/f76RZPbt25dt3uXLl5ubOcQmJCQYSdmWgIAAM2nSJNdnGjVqZNq0aeN6ffHiRRMUFGRef/1113s9e/Y0ksx77713ze1JMsuXL7/i/YiICNOlS5ds26hatapp27ZtjrbRqFEj07t3b2OMMa+//rqpWLGiMcaYZcuWufqyceNG89lnn5kLFy4YY4w5cuSI8fLyMl9//bUx5tLP9I/z//Of/zSenp7GGGN27dplJJkpU6a4xuPj483jjz9uEhMTc9wrAABs40FqAIB8o1q1atq2bZsCAgLUrFkzbd261TW2fv16Pf/889k+36RJEz3//PM6f/68du/erfDw8GyXcTds2FCbNm2SJG3btk3GGD322GNXbPeXX35RuXLlcm0/Ro8eraZNm8rf31/lypVToUL/d2Ha1q1b9dtvv13xlWS//PJLttd33323Bg4ceMPbPnbsmPbv36/XX3/d9V6hQoX04IMPavbs2TneRkhIiCTJ4XBk+/dl99xzj86ePavnn39ea9as0ebNm3XhwgWdOXMm23b79evnel2iRAlduHBBkhQfHy/p0s/osho1amjWrFmu1zntFQAANhG6AQD5xt13363MzEwtWbJEQ4cOzRa6jTFXhK9ChQrJGCNjjLKysrJdji7piteS9P3336tkyZLZ3ouMjMzFvbj0ULioqKirjj/99NPq3bt3tvf++HVfderUyRbWc8oYI0lX7VVubEOSJkyYoIEDB6pXr1569tlnVbduXT300EPZPhMSEqIiRYrkuE5jjNasWaMKFSqoVKlSknLWKwAAbOKebgBAvuHj46MKFSpIkqpXr55trE6dOlq2bFm295YuXaoaNWqocOHCqlChgg4cOJDtwWhr1qxx/btKlSqSLj28KyoqSlFRUSpZsqTefffdKx64ZlPVqlV1+PBhVw1RUVGaO3euFi5cmCvzBwcHq2zZstkeOJaVlaXly5erTp06ubINSZo4caI6deqkTz/9VN26dZO/v79+++23bJ/5sz96XFazZk1J0o8//uh6b//+/WrQoIHrfnXbvQIAICc40w0AyFeqVaumEydOuM50XhYTE6NHHnlEffr0UadOnfTtt99q4cKFmjt3riSpa9euev3119W1a1e98MILWrdunf71r3+pTJkyki6dze7evbv69++v9PR0hYSEaNSoUfrvf/+rjz/++Jbt3+uvv65HHnlEr7zyipo2bao1a9bojTfe0DfffJNr23jjjTfUq1cvhYeHq0mTJvriiy+0c+dOffHFF7m2jaCgIP30009aunSpfv31V7355ptKT093XT5+PZUqVVKHDh00ePBgXbx4UaGhofr73/+u8uXLu86Y34peAQBwPZzpBgDkK9WqVVO1atWueP/BBx/UggULtG7dOjVr1kyLFy/Wv/71L7Vu3VqSVLRoUcXFxSk9PV2tW7fWnDlzrrgH/JNPPtFjjz2mQYMGqXXr1vLw8NCSJUvk7+9/S/ZNunQf+syZMzVv3jw9+uij+vLLL/XFF1/o8ccfz7Vt9OjRQ7Gxsfrmm2/UrFkz7dq1S3FxcapVq1aubePDDz9UyZIl1bp1a7355pt68sknVbt2ba1evTrHc3z55Zfq3r27hg4dqg4dOigwMFBxcXHy8/OTdGt6BQDA9TjMH2/QAgAAAAAAuYIz3QAAAAAAWELoBgAAAADAEkI3AAAAAACWELoBAAAAALCE0A0AAAAAgCWEbgAAAAAALPF0dwHIv7KysnTo0CH5+/vL4XC4uxwAAADgljLGKD09XSEhISpUiPOdBRWhG9YcOnRIYWFh7i4DAAAAcKvExESFhoa6uwy4CaEb1vj7+0u69D+ZgIAAN1cDAAAA3FppaWkKCwtz/V6MgonQDWsuX1IeEBBA6AYAAECBxa2WBRs3FgAAAAAAYAmhGwAAAAAASwjdAAAAAABYQugGAAAAAMASQjcAAAAAAJYQugEAAAAAsITQDQAAAACAJYRuAAAAAAAsIXQDAAAAAGAJoRsAAAAAAEsI3QAAAAAAWELoBgAAAADAEkI3AAAAAACWELoBAAAAALCE0A0AAAAAgCWEbgAAAAAALCF0AwAAAABgCaEbAAAAAABLCN0AAAAAAFhC6AYAAAAAwBJCNwAAAAAAlni6uwAUAIGB7q4AAIBbyxh3VwAAyCM40w0AAAAAgCWEbgAAAAAALCF0AwAAAABgCaEbAAAAAABLCN0AAAAAAFhC6AYAAAAAwBJCNwAAAAAAlhC6AQAAAACwhNANAAAAAIAlhG4AAAAAACwhdAMAAAAAYAmhGwAAAAAASwjdAAAAAABYQugGAAAAAMASQjcAAAAAAJYQugEAAAAAsITQDQAAAACAJYRuAAAAAAAsIXQDAAAAAGAJoRsAAAAAAEsI3QAAAAAAWELoBgAAAADAEkI3AAAAAACWELoBAAAAALCE0A0AAAAAgCWEbgAAAAAALCF0AwAAAABgCaEbAAAAAABLCN0AAAAAAFhC6AYAAAAAwBJCNwAAAAAAlhC6AQAAAACwxNPdBSD/CxwmycfdVQBA/maGG3eXAAAA/gRnugEAAAAAsITQDQAAAACAJYRuAAAAAAAsIXQDAAAAAGAJoRsAAAAAAEsI3QAAAAAAWELoBgAAAADAEkI3AAAAAACWELoBAAAAALCE0A0AAAAAgCWEbgAAAAAALCF0AwAAAABgCaEbAAAAAABLCN0AAAAAAFhC6AYAAAAAwBJCNwAAAAAAlhC6AQAAAACwhNANAAAAAIAlhG4AAAAAACwhdAMAAAAAYAmhGwAAAAAASwjdAAAAAABYQugGAAAAAMASQjcAAAAAAJYQugEAAAAAsITQDQAAAACAJYRuAAAAAAAsyVehOzY2Vg6HQw6HQz4+PqpVq5YWL16cq9vYv3+/HA5Hrs75e7/fh98vS5YssbZNAAAAAIAd+Sp0S1LVqlWVkpKiPXv2qFWrVmrXrp3S0tLcXdYNubwPv18aN27sllps/5EBAAAAAPKzfBe6PTw85HQ6FRoaqpiYGJ07d067d+92d1k35PI+/H7x9PR0d1kAAAAAgBuU70L3782ePVuSFBYWJklatWqVoqKi5Ovrqzp16mjbtm2SpBUrVigiIkLz589X2bJlVbRoUX3wwQeueRYsWKAKFSqoePHiio2NzbaNbdu2qX79+goMDFSLFi2UlJQkSWrcuLF69eqlsLAwRUdHq0+fPnI6nVqwYMFf2qcff/xRUVFRKlq0qLp06aKTJ0+6xho3bqzY2FiNHTtWZcuW1fz5811j33//vapVqyan06knn3xSmZmZrrF3331XpUuXVkBAgDp37uwa8/HxUbly5STJdZn7Tz/99JfqBwAAAICCJN+F7q1bt8rpdMrX11d9+vTRp59+qpIlSyorK0vt27dXhw4dtG/fPtWtW1dDhw51rXfixAmNHj1aCxcu1IgRIzR06FCdPXtWR44cUceOHfXiiy/q559/1qJFi1zrnDp1So8++qgeeeQRbdmyRWFhYWrTpo2ysrIkSXv37tWHH36oKVOmqFq1amrVqpXmzZuX4324vGzdulWSlJiYqBYtWqh///7auHGjTp06pejo6Gzrfvrpp1q2bJkmTpyounXruupo06aNBg0apI0bN2rjxo0aM2aMJGnnzp0aNmyYvv76a23atEl79uxx/WHhyJEj2rx5syS5LnOvU6fOVevOzMxUWlpatgUAAAAACrJ8d81y5cqVtWjRIo0cOVLJycnq1auXa2zz5s0KDAzUli1blJ6enu2y81OnTunjjz9W1apVValSJT333HM6evSoVqxYocjISPXu3VuSNGLECLVo0UKS9O2338rf31/Dhw+XJH3wwQcqUaKE1q1bJ0nq0qWLoqKiJEm9e/fWiRMntH///hzvw2UhISGSpKlTp6pu3bquWj755BOVKVNGv/76q0qVKuXajx9//FFeXl6u9WfMmKGaNWvqf//3fyVJffv21eeff65XX31VPj4+ki4F5vDwcP3888+u9QIDAxUQECBJcjqd16171KhRGjFixJUDo1MlBVx3fQDAzXPEuLsC4PZijLsrAFBQ5Lsz3YULF1ZERIQGDhyoxYsXu0JuoUKFNHbsWJUpU0b9+/dXamqqLl686FqvaNGiqlGjhmsOSTLG6PDhw67L0yUpMjLS9e/ExETX5deS5O3trZCQECUmJkqSK9D+8d853YfLy+V6EhMTs20/JCRE3t7eru1JlwL17wO3JCUnJ2vTpk2uM+dD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brFz584pKytLYWFh8vX1dXc5uEFFihSRl5eXDhw4oHPnzsnHx+eqn+VBagAAAADgJtc6Q4q8Lac/O37CAAAAAABYwuXlAAAAAJCHOFasuKXbM40b3/A6S5cu1cMPP6zk5GSFhITkflH5CKEb1gUOk3T1WxwA5HHG3QUAAIA8Z/HixZKkuLg49ezZ083V5G1cXg4AAAAAuCFxcXFq3Lix4uLi3F1KnkfoBgAAAADk2LFjx7R582YNGTJES5YskTGXrov7z3/+owceeEB33HGH6tWrp//+97+uda42tmLFCkVERGSb3+FwaP/+/ZKk6OhoxcTEaOrUqapcubL+8Y9/uD63atUqRUVFydfXV3Xq1NG2bduuu72vvvpKVatWdX3u1KlT8vHx0c6dO3O1R79H6AYAAAAA5FhcXJwqVaqkhx9+WCkpKdq6davS0tLUrFkztW7dWrt27dL999+vrl27StI1x3Lihx9+0IQJEzR27Fi1bdtW0qXvOW/fvr06dOigffv2qW7duho6dOh1t9emTRvt2bNHu3btkiR99913uvPOO3XnnXfmYoey455uAAAAAECOxcXF6f7775ePj49q1qypxYsXKyQkRMWKFdNLL70kSXr11Vd17733SpIWLFhw1bGc2Ldvn3bv3q3AwMBs72/evFmBgYHasmWL0tPTtXv37utuLyAgQM2aNdO//vUvvfzyy5o7d646duz41xpyHZzpBgAAAADkWFxcnGbMmCGn06lNmzYpLi5OSUlJ2S4TL1q0qCvMXmvsj86cOXPFez169LgicBcqVEhjx45VmTJl1L9/f6WmpurixYs52t7f/vY3zZ49W+fPn9eiRYv0t7/97UZbcEMI3QAAAACAHNm+fbuSk5O1cuVKxcfH6/PPP9eqVatUsmRJJSQkuD536tQpVa1aVb/++qvCwsKuOuZwOFxhWZI2bNhwxTb9/PyueG/FihX6+OOPtWPHDm3YsEFPPPGEa+xa25Ok1q1ba/v27Zo8ebIqVKig8uXL/7WmXAehGwAAAACQI4sXL1aFChV03333KSIiQo899pguXLggp9OplJQUvfXWW0pKStLIkSN18eJFlSxZUi1btrzqWGhoqA4fPqy9e/fq9OnTiomJyVEdp06dkiSlpqZqzZo1Gjx4sOuBbtfaniTdcccdat68uV544QXrl5ZLhG4AAAAAQA7F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VbFiRQUFBenll192fR+dMUZjxoxR2bJlVbp0ab3//vt/uQ4AAAAAKCjyfej29PRUUFCQjh49qpMnT6p58+Zq2bKltm7dqjNnzmjIkCGSpP3796t169YaPHiwduzYIafTqQEDBlx3/lOnTqlXr14aPXq0tm/fLk9PT7377rvXXW/Dhg3q2bOn3n77ba1evVobNmzQsGHDXOOLFi3Snj17tGnTJtWrV0+vvPLKzTfhd1577TUdOnRIM2bMUPny5SVJq1atUu/evTV+/HitWLFCX331laZNmybp0h8URo0apZkzZ2r27Nl69dVXtXr16j+dOzMzU2lpadkWAAAAACjI8uXl5X/kcDhkjNGCBQvk5eWl1157TQ6HQ4MGDVL37t0lSdOnT1fDhg0VHR0tSRozZozr7Pi1eHh4yMvLS5mZmQoODtb8+fOVkwfCT5w4UV27dlXbtm0lSWPHjtXDDz+scePGueb97LPP5OPjo+joaD311FM3te9/FBgYqNjY2GzvTZkyRY899phatmwpSerWrZvmz5+vbt26acqUKerTp48eeOABSVKrVq00f/581a9f/4q5R40apREjRly50dGpknL/S+YB3CLD3V0AAADA7Svfn+m+ePGijh8/rpIlSyo5OVnHjh1T0aJF5XQ61aFDBx07dkwZGRlKSkrKdul4aGioWrVqdd35ixQpom+++UafffaZSpQooWbNmmnfvn3XXS8xMVGRkZGu15GRkTp79qyOHz8uSXrggQdcj50vXLhwjoJ8TjzzzDNXvJecnKy5c+fK6XTK6XTq/fff18GDB11jH3zwgWtszpw5rrE/eumll5SamupaEhMTc6VmAAAAALhd5fsz3StXrpTD4VCtWrV0+PBh1a5dWzNnzpR06X7l1NRUeXl5KSwsTCtXrnStt3v3bnXs2FEbN25UoUJX/9vEiRMnVLRoUa1Zs0anT59W3759NWjQIH377bfXrCs8PDxbON+7d698fX0VFBQkSTf1wLac8PPzu+K90NBQ9e3bVwMHDpQknT9/XllZWa6xJ554Qu3bt5d06RLyqz0UztvbW97e3lbqBgAAAIDbUb4M3RcvXtSRI0e0fv16Pf300+rfv78CAwPVsmVLPf/881q3bp0eeOABTZ06Ve+//76SkpLUuXNnjRw5UrGxsWrSpIlGjhyp4ODgawZuSTp+/LiaNGmiOXPmqEaNGipUqJArsF7Lk08+qUaNGqlFixa66667NGTIEPXp08ct36vdo0cP9ejRQ506dVJQUJBeeeUVZWVladasWerZs6fGjRunpk2bysPDQ/369VOdOnVydN86AAAAgBvnGHFrM4EZnvOramNjY9WrVy9Jl066ValSRaNGjdKjjz5qqzytWLFC0dHR2r9//w2N5RX58vLybdu2KSQkRM8++6z69u2rMWPGSJKcTqfmz5+v9957T3feeafmzJmj+fPny9PTUxEREZo3b57Gjh2rKlWq6OTJk5o8efJ1t1W5cmW999576tevnyIjI7Vr1y698847112vdu3amjJlil588UXVq1dPtWrV0qhRo/7yvt+MBg0aKCYmRt27d1fNmjV17tw5TZgwQZLUtWtXdezYUS1btlTdunVVrlw5vfHGG26pEwAAAID7Va1aVSkpKdqzZ49atWqldu3a8RDla3CY3LpZGPiDtLQ0BQYGSuJBasDtjKMEAAA35/Lvw6mpqVfcPpqRkaGEhASVK1fO9Syny/L6me7x48e7HjptjJG3t7fWrl2r2rVrW6kvr57pvtbP8Pfy5ZluAAAAAIB9s2fPliSFhYVp/fr1uu+++xQYGKh27dopNTXV9bmlS5eqevXq8vf3V/PmzZWUlJRtjkqVKsnPz08PPvigkpOTb/l+2EToBgAAAADk2NatW+V0OuXr66s+ffro008/lbe3t5o3b66WLVtq69atOnPmjIYMGSJJ2r9/v1q3bq3Bgwdrx44dcjqdGjBggCTpt99+U+fOnfXqq69qz549KlasmEaOHOnO3ct1+fJBagAAAAAAOypXrqxFixZp5MiRSk5OVq9evTR16lR5eXnptddek8Ph0KBBg9S9e3dJ0vTp09WwYUNFR0dLksaMGeO6PN3f318HDx6Uv7+/NmzYoHPnzmn37t1u2jM7CN0AAAAAgBwrXLiwIiIiNHDgQNWoUUP79+9XcnKyjh07pqJFi0qSsrKylJ6eroyMDCUlJSkiIsK1fmhoqEJDQyVduid82LBhmjNnju6++24FBgbq4sWL7tgta7i8HAAAAABww6pWraq6detq0qRJCg0NVe3atRUfH6/4+Hht3rxZ//nPf+Tl5aWwsDAlJCS41tu9e7dq1qyprKwsTZ8+XStXrlRSUpLWrl2r//mf/3HjHtlB6AYAAAAA3JR+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8HClpKS4uwwAAAAAKDDyROguXLiw7rjjjlyd08fHR76+vrk2X5EiRVS0aFFFRUXp6aef1qZNm3Jt7lulUKFCcjqd7i4DAAAAAAqMXAvdP/74o6KiolS0aFF16dJFJ0+edI0tW7ZM5cqVU5kyZfTCCy8oLCxM8+fPd41f7fLyd999V6VLl1ZAQIA6d+6szMxMSZcCdbly5STJddn3Tz/9lG3dq11ePn78eIWHh6t48eLq16+fzp8/f0P7eebMGX377beKjIyUJBljNGbMGJUtW1alS5fW+++/n+3zgwcPltPpVKNGjfS///u/Cg0NlSStWLFCERER2rt3r5o2bap69eq51klPT9cTTzyh4sWL66677tLKlStdY/v27VOjRo3k5+enihUr6vvvv3eNbdy4UbVq1ZKvr69q1KihDRs2ZKvlalcHbNu2TfXr11dgYKBatGihpKSkbDXOnz9fZcuWVdGiRfXBBx/cUL8AAAAAoCDLldCdmJioFi1aqH///tq4caNOnTrlCrzGGHXv3l1vvvmmpk2bpgkTJmjZsmV68MEHrznnzp07NWzYMH399dfatGmT9uzZo9jYWEnSkSNHtHnzZklSSkqKUlJSVKdOnevWOXPmTI0ePVrTpk3T2rVrtXLlSn300Uc52seXXnpJTqdTAQEB2rdvn8aNGydJmjp1qkaNGqWZM2dq9uzZevXVV7V69WpJ0uLFizV79mxt2LBBVatW1W+//ZYtCGdkZKhdu3Z67LHHsoXZgQMHatu2bfr55581cOBAtW3bVqdOnZIkvfzyywoODtbu3bv14osvqlevXq71+vfvr/r162vPnj1q166dnnnmmevu16lTp/Too4/qkUce0ZYtWxQWFqY2bdooKytLknTixAmNHj1aCxcu1IgRIzR06FCdPXv2T+fKzMxUWlpatgUAAAAACjSTQ5MnTzY1atT407G33nrLPPLII67XycnJRpI5fPiwOXLkiJFkMjMzjTHGlCpVyqxdu/aKuRs1apTtvYSEBOPh4WEWL15sMjMzzcWLF83FixezjV+r/OHDh5uePXtme++RRx4xo0ePdr3euHGj+fnnn6+128YYYxo1amRee+01s2fPHlO8eHEzc+ZM11iTJk3Miy++6HrdqVMnM3ToUGOMMW+//bbp3LmzMcaY77//3lSqVMn1ueXLlxtJZvr06dm2dfHi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\n",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "([0.9736842105263158, 0.9298245614035088, 0.9649122807017544],\n",
       " [0.975609756097561, 0.9047619047619048, 0.975],\n",
       " [0.9523809523809523, 0.9047619047619048, 0.9285714285714286],\n",
       " [0.963855421686747, 0.9047619047619048, 0.951219512195122])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score, recall_score, f1_score\n",
    "\n",
    "# 计算其它评估指标\n",
    "models = ['Logistic Regression', 'Decision Tree', 'Random Forest']\n",
    "y_preds = [y_pred, y_pred_dt, y_pred_rf]\n",
    "\n",
    "accuracies = [accuracy_score(y_test, y_pred) for y_pred in y_preds]\n",
    "precisions = [precision_score(y_test, y_pred) for y_pred in y_preds]\n",
    "recalls = [recall_score(y_test, y_pred) for y_pred in y_preds]\n",
    "f1_scores = [f1_score(y_test, y_pred) for y_pred in y_preds]\n",
    "\n",
    "# 把这些评估指标整体展示\n",
    "fig, ax = plt.subplots(figsize=(10, 6))\n",
    "\n",
    "x = range(len(models))\n",
    "ax.barh(x, accuracies, color='c', height=0.2, label='Accuracy')\n",
    "ax.barh([p + 0.2 for p in x], precisions, color='b', height=0.2, label='Precision')\n",
    "ax.barh([p + 0.4 for p in x], recalls, color='g', height=0.2, label='Recall')\n",
    "ax.barh([p + 0.6 for p in x], f1_scores, color='r', height=0.2, label='F1 Score')\n",
    "\n",
    "ax.set_xlabel('Score')\n",
    "ax.set_title('Model Performance')\n",
    "ax.set_yticks([p + 0.3 for p in x])\n",
    "ax.set_yticklabels(models)\n",
    "ax.set_xlim(0.85, 1.01)\n",
    "plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "accuracies, precisions, recalls, f1_scores\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
